ROS2 HelloWorld

安装ros2

很多镜像源无法直接安装ROS2,需要添加ROS2的地址到源列表,然后更新。

sudo apt install curl -y
sudo apt install gnupg2  -y
curl -s https://gitee.com/ohhuo/rosdistro/raw/master/ros.asc | sudo apt-key add -
sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2-latest.list'
sudo apt update

这里安装foxy桌面版:

sudo apt install ros-foxy-desktop 

顺便安装个编译工具colcon

sudo apt install python3-colcon-common-extensions

要运行ros前需要先设置环境

source /opt/ros/foxy/setup.bash

环境设置成功可以用printenv | grep -i ROS查看相关信息

printenv | grep -i ROS

在这里插入图片描述
如果需要启动时自动设置环境,可以这样

echo "source /opt/ros/foxy/setup.bash" >> ~/.bashrc
source ~/.bashrc

运行helloworld测试例程

ros2 run demo_nodes_cpp talker &
ros2 run demo_nodes_cpp listener &

在这里插入图片描述
运行小乌龟测试例程

ros2 run turtlesim turtlesim_node &
ros2 run turtlesim turtle_teleop_key &

按键盘小乌龟会动,比如方向键
在这里插入图片描述

HelloWorld实现

创建工作空间

首先创建个ROS的工作空间

mkdir ~/ROSWorkspace

创建功能包和节点

创建功能包和节点一般可以用下面这个命令:

ros2 pkg create <package_name> --build-type <build-type> --dependencies <dependencies> --node-name
其中:
package_name:是我们要创建的功能包名称
build-type:用于指定构建系统类型,例如ament_cmake 和ament_python
dependencies:表示功能包的依赖项,例如:一般C++会需要rclcpp,Python会需要rclpy,当然这个不是强制的。
node-name:节点名称,也是可执行程序的名称,会自动生成对应的源文件并生成配置文件

先创建一个ament_cmake的hello world,这里虽然指定了dependencies rclcpp,不过目前的例程暂时没有用到,仅仅是个示例,不用纠结后面没有用到。

ros2 pkg create pkg_helloworld_cpp --build-type ament_cmake --dependencies rclcpp --node-name helloworld_cpp

在这里插入图片描述
指定–node-name会帮我们自动创建.cpp源文件
在这里插入图片描述
当然不指定–node-name,我们也可以手动创建一个自己的.cpp,然后在CMakeLists.txt中根据实际情况添加类似如下的内容:
在这里插入图片描述
源代码和工程配置完成后就可以编译我们的工程了,我们这里使用colcon来编译,当然也还有其他方式,这里暂时不做介绍。
前面已经安装了colcon,没安装的执行下面的命令安装一下

sudo apt install python3-colcon-common-extensions

编译工作包时我们可以直接编译工作空间里的所有工作包

colcon build

编译工作空间中的所有功能包可能会比较耗时,也可以单独编译指定的工作包,可以节省时间

colcon build --packages-select pkg_helloworld_cpp

在这里插入图片描述
可能我这里实在wsl环境下编译的,就几行代码耗时20多秒
编译完后,工作空间例会多出几个文件夹,build、install、log
在这里插入图片描述

install中有配置当前工作空间环境的脚本,运行helloworld前先配置下环境

. install/setup.bash

然后就可以使用我们的helloworld_cpp了,命令格式如下

ros2 run package_name executable_name ...

这里跑下helloworld_cpp

ros2 run pkg_helloworld_cpp helloworld_cpp

在这里插入图片描述
到这里我们就是先一个最简单hello world例程了。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ROS中实现一个简单的"Hello World"程序很简单。首先,你需要创建一个ROS工作空间,并在其中创建一个新的ROS软件包。然后,在软件包的src文件夹中创建一个新的C++源文件,编写一个ROS节点来发布一个简单的字符串消息。 以下是实现的步骤: 1. 创建ROS工作空间(如果你已经有一个工作空间,可以跳过此步骤): ``` $ mkdir -p ~/catkin_ws/src $ cd ~/catkin_ws/ $ catkin_make ``` 2. 创建ROS软件包并进入软件包目录: ``` $ cd ~/catkin_ws/src $ catkin_create_pkg hello_world std_msgs roscpp $ cd hello_world ``` 3. 创建一个名为"hello_world.cpp"的C++源文件: ``` $ touch src/hello_world.cpp $ chmod +x src/hello_world.cpp ``` 4. 使用文本编辑器打开"hello_world.cpp"文件,并编写以下代码: ```cpp #include <ros/ros.h> #include <std_msgs/String.h> int main(int argc, char** argv) { ros::init(argc, argv, "hello_world_node"); ros::NodeHandle nh; ros::Publisher pub = nh.advertise<std_msgs::String>("hello_world_topic", 10); ros::Rate rate(10); while (ros::ok()) { std_msgs::String msg; msg.data = "Hello, world!"; pub.publish(msg); ros::spinOnce(); rate.sleep(); } return 0; } ``` 5. 编译并运行ROS节点: ``` $ cd ~/catkin_ws/ $ catkin_make $ source devel/setup.bash $ rosrun hello_world hello_world_node ``` 现在,ROS节点将会以10Hz的频率发布一个字符串消息到名为"hello_world_topic"的话题中。你可以使用ROS工具来查看发布的消息,如下所示: ``` $ rostopic echo hello_world_topic ``` 你将会看到"Hello, world!"的消息不断地在终端中打印出来。这就是一个简单的ROS "Hello World"程序的实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值