﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-jack-wang-随笔分类-ROS2</title><link>http://www.cppblog.com/jack-wang/category/21457.html</link><description>小王</description><language>zh-cn</language><lastBuildDate>Mon, 02 Feb 2026 16:17:08 GMT</lastBuildDate><pubDate>Mon, 02 Feb 2026 16:17:08 GMT</pubDate><ttl>60</ttl><item><title>ROS2开发环境搭建</title><link>http://www.cppblog.com/jack-wang/archive/2025/05/31/230440.html</link><dc:creator>小王</dc:creator><author>小王</author><pubDate>Fri, 30 May 2025 18:51:00 GMT</pubDate><guid>http://www.cppblog.com/jack-wang/archive/2025/05/31/230440.html</guid><wfw:comment>http://www.cppblog.com/jack-wang/comments/230440.html</wfw:comment><comments>http://www.cppblog.com/jack-wang/archive/2025/05/31/230440.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jack-wang/comments/commentRss/230440.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jack-wang/services/trackbacks/230440.html</trackback:ping><description><![CDATA[一、安装ROS2软件及工具<br /><div>1、更新软件源</div><div>cp /etc/apt/sources.list /etc/apt/sources.list.bak</div><div>vim /etc/apt/sources.list</div><div>将文件中的内容替换为：</div><div>deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main multiverse universe restricted</div><div>deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main multiverse universe restricted</div><div>deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main multiverse universe restricted</div><div>deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main multiverse universe restricted<br />保存退出<br /><div>sudo apt update<br /><br />2、设置软件源</div><div>sudo apt install curl gnupg lsb-release</div><div>sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg</div><div></div><div>然后将存储库添加到源列表：</div><div>echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release &amp;&amp; echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list &gt; /dev/null</div><div></div><div><div>打开一个IP地址查询网站</div><div>https://www.ipaddress.com/</div></div><div>输入域名：raw.githubusercontent.com 查询 IP 地址(可能能查到多个，任选一个就行)</div><div>例如185.199.108.133</div><div>修改文件：</div><div>sudo vim /etc/hosts</div><div>文件末尾添加一行代码：</div><div>185.199.108.133 raw.githubusercontent.com<br />保存退出<br /><br /><div>3、安装 ROS2</div><div>sudo apt update</div><div>sudo apt upgrade</div><div>apt install ros-humble-desktop<br />等待等待，，，</div><div></div><div>安装完成后，配置环境</div><div>echo "source /opt/ros/humble/setup.bash" &gt;&gt; ~/.bashrc<br /><br />4、测试<br />运行一个类似ROS1里的demo，开两个控制台，分别运行：<br /><div>ros2 run turtlesim turtlesim_node</div><div>ros2 run turtlesim turtle_teleop_key<br />再次见到久违的小乌龟了!<br />O了！</div><br />5、安装 colcon 构建工具</div><div>sudo apt install python3-colcon-common-extensions<br /><br /><br />二、创建项目并编译运行<br />1、创建ROS2工作目录<br />例如命名为workspace：<br />cd root<br />mkdir workspace<br />cd workspace<br /><br />创建项目：<br /><div>ros2 pkg create --build-type ament_cmake test1<br />或者<br /><div>ros2 pkg create --build-type ament_cmake test1 --dependencies rclcpp std_msgs<br /><br />其中test1为包名。<div>--dependencies 指定依赖的功能包，如 rclcpp、std_msgs<br /></div></div>2、编写代码<br /><div>在 test1/src/ 目录下新建文件 talker.cpp：</div><div></div><div>#include &lt;rclcpp/rclcpp.hpp&gt;</div><div>#include &lt;std_msgs/msg/string.hpp&gt;</div><div>&nbsp;</div><div>int main(int argc, char * argv[])</div><div>{</div><div>&nbsp; rclcpp::init(argc, argv);</div><div>&nbsp; auto node = rclcpp::Node::make_shared("talker");</div><div>&nbsp; auto publisher = node-&gt;create_publisher&lt;std_msgs::msg::String&gt;("chatter", 10);</div><div>&nbsp;</div><div>&nbsp; rclcpp::WallRate loop_rate(1);</div><div>&nbsp; while (rclcpp::ok()) {</div><div>&nbsp; &nbsp; auto msg = std_msgs::msg::String();</div><div>&nbsp; &nbsp; msg.data = "Hello, ROS 2!";</div><div>&nbsp; &nbsp; RCLCPP_INFO(node-&gt;get_logger(), "Publishing: '%s'", msg.data.c_str());</div><div>&nbsp; &nbsp; publisher-&gt;publish(msg);</div><div>&nbsp; &nbsp; rclcpp::spin_some(node);</div><div>&nbsp; &nbsp; loop_rate.sleep();</div><div>&nbsp; }</div><div>&nbsp; rclcpp::shutdown();</div><div>&nbsp; return 0;</div><div>}<br /><br />3、修改cmake文件<br /><div>在 CMakeLists.txt 增加如下内容：</div><div>find_package(rclcpp REQUIRED)</div><div>find_package(std_msgs REQUIRED)</div><div>&nbsp;</div><div>add_executable(talker src/talker.cpp)</div><div>ament_target_dependencies(talker rclcpp std_msgs)</div><div>&nbsp;</div><div>install(TARGETS</div><div>&nbsp; talker</div><div>&nbsp; DESTINATION lib/${PROJECT_NAME}</div><div>)</div></div><br />4、编译<br />回到ROS2工作空间根目录<br /><div>colcon build --packages-select cpp_example</div><div>source install/setup.bash<br /><br />5、运行<br /><div>ros2 run cpp_example talker<br /><br /><br />O了！！！</div></div></div></div></div></div><img src ="http://www.cppblog.com/jack-wang/aggbug/230440.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jack-wang/" target="_blank">小王</a> 2025-05-31 02:51 <a href="http://www.cppblog.com/jack-wang/archive/2025/05/31/230440.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>