ROS2常用代码
一:编辑文件常用代码
1.编译文件包
colcon build //全部编译 --packages-select <project_name> //选择单独编译的项目包
2.创建新的工程文件包
ros2 apk create <project_name> //创建项目 --build-type <ament_cmake/ament_python(c++/pyrhon)> //选择使用C++还是python --dependencies <functional_area> <> <> //选择要添加的依赖包
3.刷新环境
source install/setup.bash
4.执行文件包
ros2 run <project_name> <package> //执行文件
二:书写常用代码
1.话题通讯代码
1.发布者代码
rclcpp::Publisher<Data>::SharedPtr = publisher_ = this->create_publisher<Data>("chatter", 10); rclcpp::TimerBase::SharedPtr = timer_ = this->create_wall_timer(500ms, std::bind(&Publisher_Node::timer_callback, this)); void timer_callback()
{ auto message = Data();
publisher_->publish(message);
}
using namespace std::chrono_literals;
2.订阅者
subscription_ = this->create_subscription<Data>("chatter", 10, std::bind(&Listener_Node::topic_callback, this, std::placeholders::_1));
void topic_callback(const Data::SharedPtr msg) const{}
rclcpp::Subscription<Data>::SharedPtr subscription_;
rclcpp::spin(std::make_shared<Listener_Node>());
三:书写packages.xml\
<depend>rclcpp</depend>
//用来编译msg文件用的 <build_depend>rosidl_default_generators</build_depend> <exec_depend>rosidl_default_runtime</exec_depend> <member_of_group>rosidl_interface_packages</member_of_group>
四:书写CMakeLists.txt
//创建msg,注意大写
rosidl_generate_interfaces(${PROJECT_NAME} "msg/Stu.msg" ) //找包,编译执行 find_package(rclcpp REQUIRED) add_executable(demo src/demo.cpp) ament_target_dependencies( demo "rclcpp" ) //静态库安装位置 install(TARGETS demo DESTINATION lib/${PROJECT_NAME})