ROS学习:创建机器人的urdf
ROS學習之路08:創建機器人的urdf(xacro)模型并通過rviz可視化_Hi, Robotics-CSDN博客_urdf可視化
1 創建工作空間
mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src catkin_init_workspace cd .. catkin_make注意:上面的?catkin_make 可能用 catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3
2 在工作空間中創建功能包
cd ~/catkin_ws/src catkin_create_pkg custom_urdf roscpp urdf tf rviz geometry_msgs cd .. catkin_make echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc source ~/.bashrc檢查soucre的結果:
printenv | grep ROS
?3 向功能包添加機器人的urdf模型
roscd custom_urdf mkdir rviz mkdir launch mkdir urdf && cd urdf gedit four_wheels_car.urdf向four_wheels_car.urdf文件添加如下的內容:
*下面的資料綜合看,能比較全面入門urdf模型的rviz可視化
?檢查urdf文件的合適性。
check_urdf?? four_wheels_car.urdf
顯示urdf的數據
urdf_to_graphiz four_wheels_car.urdf
evince four_wheels_car.pdf
4 編寫launch啟動文件
roscd custom_urdf/launch gedit view_car.launch黏貼代碼:
<launch><arg name = "model"/><param name = "robot_description" textfile = "$(find custom_urdf)/urdf/four_wheels_car.urdf"/><param name = "use_gui" value = "true"/><node name = "joint_state_publisher"pkg = "joint_state_publisher"type = "joint_state_publisher"/><node name = "robot_state_publisher"pkg = "robot_state_publisher"type = "state_publisher"/><node name = "rviz"pkg = "rviz"type = "rviz"args = "-d $(find custom_urdf)/rviz/urdf.rviz"required = "true"/> </launch>注意:節點rviz中的args參數加載功能包的 rviz 目錄下的 .rviz 配置文件,因為一開始我們并沒有配置rviz任何選項,所以該配置文件并不存在,只有當我們通過launch文件打開了rviz,通過配置rviz然后保存配置文件到功能包的rviz目錄下,并將配置文件另存為urdf.rviz文件,當我們再次啟動rviz節點的時候,rviz就會自動加載配置文件,我們就不需要手動設置了.
5 啟動節點,通過rviz查看機器人模型
roslaunch custom_urdf view_demo_xacro.launch已經顯示出結果。
包存放路徑:
6 向功能包添加機器人的xacro文件
pan_tilt.xacro
<?xml version="1.0" ?> <robot name="pan_tilt" xmlns:xacro="http://ros.org/wiki/xacro"><xacro:property name = "base_link_length" value = "0.01"/><xacro:property name = "base_link_radius" value = "0.2"/><xacro:property name = "pan_link_length" value = "0.4"/><xacro:property name = "pan_link_radius" value = "0.04"/><xacro:property name = "tilt_link_length" value = "0.4"/><xacro:property name = "tilt_link_radius" value = "0.04"/><xacro:macro name = "inertial_matrix" params = "mass"><inertial><mass value = "${mass}"/><inertia ixx = "0.5" ixy = "0.0" ixz = "0.0"iyy = "0.5" iyz = "0.0"izz = "0.5"/></inertial></xacro:macro><link name = "base_link"><visual><geometry><cylinder length = "${base_link_length}" radius = "${base_link_radius}"/></geometry><origin xyz = "0 0 0" rpy = "0 0 0"/><material name = "yellow"><color rgba = "1 1 0 1"/></material></visual><collision><geometry><cylinder length="${base_link_length+0.02}" radius="0.2"/></geometry><origin rpy="0 0 0" xyz="0 0 0"/></collision><xacro:inertial_matrix mass="1"/></link><joint name="pan_joint" type="revolute"><parent link="base_link"/><child link="pan_link"/><origin xyz="0 0 0.1"/><axis xyz="0 0 1" /><limit effort="300" velocity="0.1" lower="-3.14" upper="3.14"/><dynamics damping="50" friction="1"/></joint><link name="pan_link"><visual><geometry><cylinder length="${pan_link_length}" radius="${pan_link_radius}"/></geometry><origin rpy="0 0 0" xyz="0 0 0.09"/><material name="red"><color rgba="0 0 1 1"/></material></visual><collision><geometry><cylinder length="${pan_link_length}" radius="${pan_link_radius+0.02}"/></geometry><origin rpy="0 0 0" xyz="0 0 0.09"/></collision><xacro:inertial_matrix mass="1"/></link><joint name="tilt_joint" type="revolute"><parent link="pan_link"/><child link="tilt_link"/><origin xyz="0 0 0.2"/><axis xyz="0 1 0" /><limit effort="300" velocity="0.1" lower="-4.64" upper="-1.5"/><dynamics damping="50" friction="1"/></joint><link name="tilt_link"><visual><geometry><cylinder length="${tilt_link_length}" radius="${tilt_link_radius}"/></geometry><origin rpy="0 1.5 0" xyz="0 0 0"/><material name="green"><color rgba="1 0 0 1"/></material></visual><collision><geometry><cylinder length="${tilt_link_length}" radius="${tilt_link_radius+0.2}"/></geometry><origin rpy="0 1.5 0" xyz="0 0 0"/></collision><xacro:inertial_matrix mass="1"/></link></robot>view_demo_xacro.launch
<launch><arg name="model"/><param name="robot_description"command="$(find xacro)/xacro --inorder $(find custom_urdf)/urdf/pan_tilt.xacro"/><param name="use_gui" value="true"/><node name="joint_state_publisher"pkg="joint_state_publisher"type="joint_state_publisher"/><node name="robot_state_publisher"pkg="robot_state_publisher"type="state_publisher"/><node name="rviz"pkg="rviz"type="rviz"args="-d $(find custom_urdf)/urdf.rviz"required="true" /> </launch>在rviz中查看機器人模型
roslaunch custom_urdf view_demo_xacro.launch
我們可以把 view_demo_xacro.launch 文件中的如下內容:
<param name="robot_description" command="$(find xacro)/xacro --inorder $(find custom_urdf)/urdf/pan_tilt.xacro"/>
換成:
<param name="robot_description" command="$(find xacro)/xacro $(arg model)"/>
這樣我們可以通過傳入參數來加載機器人模型:
roscd custom_urdf
roslaunch custom_urdf view_demo_xacro.launch model:=urdf/pan_tilt.xacro
完成了機器人簡單的urdf和xacro文件的編寫
Enjoy It!
?
參考文獻:
【1】https://blog.csdn.net/l1216766050/article/details/79586425#commentBox
【2】ROS學習之路08:創建機器人的urdf(xacro)模型并通過rviz可視化【*下面的資料綜合看,能比較全面入門urdf模型的rviz可視化】
【3】ros模型建立——urdf 【下面這篇有報錯的解決方法】
【4】urdf文件在rviz中顯示的launch文件配置【這篇文章有launch文件的詳細解釋】
【5】https://zhuanlan.zhihu.com/p/67741739
【6】將xacro格式文件轉換為urdf格式并檢查格式是否正確常用方式 - 木雞 - 博客園
【7】康娜喵的博客_CSDN博客
總結
以上是生活随笔為你收集整理的ROS学习:创建机器人的urdf的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在Windows10上安装ROS并测试
- 下一篇: 深入理解ROS技术 【4】ROS下的模块