赞
踩
打开终端,输入以下指令添加密钥:
sudo apt install curl 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
安装过程如果失败,则多试几次,有可能是网络问题。
sudo apt install python3-argcomplete -y
echo "source /opt/ros/foxy/setup.bash" >> ~/.bashrc
source .bashrc
安装成功后,可以用以下指令查看ROS2版本
printenv | grep -i ROS
分别打开两个终端执行:
ros2 run demo_nodes_cpp talker
ros2 run demo_nodes_cpp listener
分别打开两个终端执行:
ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key
也可以试试下面一键安装ros2
一行代码安装ROS/ROS2、解决rosdep问题、配置好环境
wget http://fishros.com/install -O fishros && . fishros
参考:
一行代码安装ROS/ROS2、解决rosdep问题、配置好环境
ROS2中创建一个新的功能包的语法为:
ros2 pkg create --build-type ament_cmake 'pkg_name'
则功能包的文件路径为:
dev_ws/src/pkg_name
sudo apt install python3-colcon-common-extensions
colcon build
编译工程是在dev_ws
文件夹下。
当只编译demo_pkg时,可以执行:
colcon build --packages-select demo_pkg
编译工程后,dev_ws
下会出现两个文件夹,在dev_ws
下执行
. install/setup.bash
将工作空间添加到环境中,之后就可以使用pkg了。
#TODO 工作空间写到bashrc中。
起终端执行命令:
ros2 run pkg_name node_name
原始的数据类型只有九类。其中每一个都可以在后面加上[]
将其变成数组形式。
bool
byte
char
float32, float64
int8, uint8
int16, uint16
int32, uint32
int64, uint64
string
查看消息类型
ros2 interface show sensor_msgs/msg/Image
自动生成的标准消息类型在:
/opt/ros/galactic/include/std_msgs/msg
在CMakeList中需要添加消息的pkg属性,比如:
find_package(geometry_msgs REQUIRED)#change
...
ament_target_dependencies(pibot_driver
rclcpp
geometry_msgs)#change
在dev_ws/src下
mkdir msgs
则msgs文件夹与其他pkg文件夹同级,并把所有需要自定义的消息包都创建在msgs
文件夹中便于统一管理.
cd msgs
ros2 pkg create --build-type ament_cmake demo_msg //demo_msg是新包的名称
cd demo_msg
mkdir msg
cd msg
touch DemoStamped.msg
DemoStamped.msg是自定义消息的载体,打开DemoStamped.msg并输入下面:
float32 data
消息变量名必须是由小写的字母或数字的字符以及下划线组成。必须以字母字符开头,不能以下划线结尾,而且不能有连续的两个下划线。
注意:change
意思是要添加的行。
CMakeLists.txt
# find dependencies
find_package(ament_cmake REQUIRED)
# uncomment the following section in order to fill in
# further dependencies manually.
# find_package(<dependency> REQUIRED)
find_package(rosidl_default_generators REQUIRED)#change
rosidl_generate_interfaces(${PROJECT_NAME}
"msg/DemoStamped.msg"
)#change
package.xml
<buildtool_depend>ament_cmake</buildtool_depend>
<build_depend>rosidl_default_generators</build_depend> #change
<test_depend>ament_lint_auto</test_depend>
<test_depend>ament_lint_common</test_depend>
<exec_depend>rosidl_default_runtime</exec_depend> #change
<member_of_group>rosidl_interface_packages</member_of_group> #change
cd ~/dev_ws/src
colcon build --packages-select demo_msg
现在接口将被其他ROS 2包发现。
可以先验证自定义消息是否创建成功,在dev_ws
下运行:
. install/setup.bash
可以使用ros2 interface show命令确认接口创建工作:
ros2 interface show demo_msg/msg/DemoStamped
返回:
float32 data
如果pkg_hello
要使用自定义消息,需要对pkg_hello
的节点、CMakelist和package文件进行一些简单的修改。
find_package(rclcpp REQUIRED)
find_package(demo_msg REQUIRED) # change,且,不能与其他msg并列在一起,需要find_package()自起一行
add_executable(target src/xx.cpp)
ament_target_dependencies(target rclcpp demo_msg)# change
添加:
<depend>demo_msg</depend>
python(可忽略):
<exec_depend>tutorial_interfaces</exec_depend>
#include"demo_msg/msg/demo_stamped.hpp"
注意!
我们上面自定义消息的文件名是DemoStamped.msg
,每个首字母都是大写,编译后的头文件是demo_stamped.hpp
,每个首字母已经是小字母,并且用下划线隔离。这点要非常注意,否则是找不到自定义消息的头文件的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。