husky+kinova遇到的问题

husky+kinova 遇到的问题


1.Spawn robot in gazebo

    <node name="spawn_husky_model" pkg="gazebo_ros" type="spawn_model"
        args="-x $(arg x)
              -y $(arg y)
              -z $(arg z)
              -Y $(arg yaw)
              -J j2n6s300_joint_1 0.0
              -J j2n6s300_joint_2 1.1
              -J j2n6s300_joint_3 0.5
              -J j2n6s300_joint_4 2.07
              -J j2n6s300_joint_5 2.5
              -J j2n6s300_joint_6 2.0
              -J j2n6s300_joint_finger_1 1.0
              -J j2n6s300_joint_finger_2 1.0
              -J j2n6s300_joint_finger_3 1.0              
              -unpause
              -urdf
              -param robot_description
              -model $(arg robot_namespace)" />

这里的 spawn_model 节点,可以通过以下语句查看它各个参数的意义:

rosrun gazebo_ros spawn_model -h

结果显示:

SpawnModel script started
Commands:
    -[urdf|sdf|trimesh|gazebo] - specify incoming xml is urdf, sdf or trimesh format. gazebo arg is deprecated in ROS Hydro
    -[file|param|database] [<file_name>|<param_name>|<model_name>] - source of the model xml or the trimesh file
    -model <model_name> - name of the model to be spawned.
    -reference_frame <entity_name> - optinal: name of the model/body where initial pose is defined.
                                     If left empty or specified as "world", gazebo world frame is used.
    -gazebo_namespace <gazebo ros_namespace> - optional: ROS namespace of gazebo offered ROS interfaces.  Defaults to /gazebo/ (e.g. /gazebo/spawn_model).
    -robot_namespace <robot ros_namespace> - optional: change ROS namespace of gazebo-plugins.
    -unpause - optional: !!!Experimental!!! unpause physics after spawning model
    -wait - optional: !!!Experimental!!! wait for model to exist
    -trimesh_mass <mass in kg> - required if -trimesh is used: linear mass
    -trimesh_ixx <moment of inertia in kg*m^2> - required if -trimesh is used: moment of inertia about x-axis
    -trimesh_iyy <moment of inertia in kg*m^2> - required if -trimesh is used: moment of inertia about y-axis
    -trimesh_izz <moment of inertia in kg*m^2> - required if -trimesh is used: moment of inertia about z-axis
    -trimesh_gravity <bool> - required if -trimesh is used: gravity turned on for this trimesh model
    -trimesh_material <material name as a string> - required if -trimesh is used: E.g. Gazebo/Blue
    -trimesh_name <link name as a string> - required if -trimesh is used: name of the link containing the trimesh
    -x <x in meters> - optional: initial pose, use 0 if left out
    -y <y in meters> - optional: initial pose, use 0 if left out
    -z <z in meters> - optional: initial pose, use 0 if left out
    -R <roll in radians> - optional: initial pose, use 0 if left out
    -P <pitch in radians> - optional: initial pose, use 0 if left out
    -Y <yaw in radians> - optional: initial pose, use 0 if left out
    -J <joint_name joint_position> - optional: initialize the specified joint at the specified value
    -package_to_model - optional: convert urdf <mesh filename="package://..." to <mesh filename="model://..."
    -b - optional: bond to gazebo and delete the model when this program is interrupted

这里遇到的问题是:
当加入 unpause 参数时,代表用 Gazebo 生成模型后取消物理暂停,所以 gazebo 机械臂会因为重力的作用掉下来瘫软在地上:
在这里插入图片描述
当我不设置 unpause 这个参数时,代表用 Gazebo 生成模型后启用物理暂停,这时候 kinova 机械臂确实是能够保持为自己设定的关节姿态,但是奇怪的是, husky 小车的初识位置却并不在默认的 0 0 0 位置:

  <arg name="x" default="0.0"/>
  <arg name="y" default="0.0"/>
  <arg name="z" default="0.0"/>
  <arg name="yaw" default="0.0"/>

而是如下图所示:
在这里插入图片描述
只要一加上 unpause 参数,husky 车轮就会被“埋”一部分在地面以下。

2.rviz显示机器人模型时:No transform from [links] to [base_link]
husky 源代码就是以base_link为参考系的,但是kinova机械臂不是,导致kinova的各个links不能以base_link 为参考系,无法在rviz中正常显示机器人模型。
找到husky_kinetic_devel/husky_viz/rviz/model.rviz,在links中写入:

        j2n6s300_end_effector:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
        j2n6s300_link_1:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
        j2n6s300_link_2:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
        j2n6s300_link_3:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
        j2n6s300_link_4:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
        j2n6s300_link_5:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
        j2n6s300_link_6:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
        j2n6s300_link_finger_1:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
        j2n6s300_link_finger_2:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
        j2n6s300_link_finger_3:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
        j2n6s300_link_finger_tip_1:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
        j2n6s300_link_finger_tip_2:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true
        j2n6s300_link_finger_tip_3:
          Alpha: 1
          Show Axes: false
          Show Trail: false
          Value: true

在这里插入图片描述
3.使用Twist消息控制机器人移动
在这里插入图片描述Base Controller是ROS中的基本控制节点,其中包含PID算法控制电机运动,主要负责监听终端中其他节点发出的以/cmd_vel为topic的控制指令,然后发布/odem(topic)的oeometry消息(里程消息,通常由编码器数据计算得到或结合惯导经EKF得到)

rostopic pub -r 10 /husky_velocity_controller/cmd_vel geometry_msgs/Twist '{linear: {x: 4, y: 0, z: 0}, angular: {x: 0, y: 0, z: 0.5}}'

“-r 10” 表示以10HZ的频率发布消息;
“/cmd_vel”为消息的Topic,”geometry_msgs/Twist” 为消息类型;
‘{linear: {x: 0.1, y: 0, z: 0}, angular: {x: 0, y: 0, z: -0.5}}’表示指定的线速度和角速度;
linear: {x: 0.2, y: 0, z: 0}*的意思就是机器人沿着x轴正方向,即向前运动,速度为 *0.2m/s;
angular: {x: 0, y: 0, z: 0.5} 的意思是机器人沿着z轴做逆时针旋转的角速度为 0.5rad/s;

4.启动rviz时,joint_state_publisher 不能用
在这里插入图片描述

[joint_state_publisher-1] process has died [pid 26867, exit code 1, cmd /opt/ros/kinetic/lib/joint_state_publisher/joint_state_publisher __name:=joint_state_publisher __log:=/home/hjs/.ros/log/ad077b66-0545-11eb-8610-3cf862e0843b/joint_state_publisher-1.log].

查找了很多帖子,大概都是说URDF或launch文件格式不规范:

  • urdf文件第一行前面不能有空格
  • urdf第一行不能加注释
  • urdf文件中不能用中文注释
    可是我的URDF文档中并未出现上述问题。。。

5.机械臂会穿过husky小车,而不是耷拉在husky上面

在这里插入图片描述在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值