@小鱼 是我的controllers_gazebo.yaml文件里面name那一行不对
Aquiver 发布的最佳帖子
Aquiver 发布的最新帖子
-
手眼标定 眼在手上
目的:将相机获取的点云转变到机械臂基座标下
1.手眼标定:利用easy_handeye功能包进行手眼标定
配置的launch文件
标定结果
编写cpp
Quaterniond q1(-0.01212536541456388,-0.06630808814296718,0.9699827597086316,0.2336442997986779),q2(0.655395,-0.654873,-0.265976,0.266188);//q1为标定结果文件中四元数,q2为机械臂末端姿态四元数(通过机械臂控制demo文件直接打印获得) q1.normalize(); q2.normalize(); Vector3d t1(-0.07166787993510233,0.14375536022424967,0.09587844058930889),t2(-0.2,0.2,0.825),t3(-0.2,-0.25,0.825);//t1从标定结果中获得,t2、t3在机械臂控制文件中获得 Isometry3d T(q1),T1w(q2),T2w(q2);//T为手眼标定变换矩阵,T1为姿态1,T2为姿态二 T.pretranslate(t1); T1w.pretranslate(t2); T2w.pretranslate(t3); Matrix4d T0 = T.matrix(); Matrix4d T1 = T1w.matrix(); Matrix4d T2 = T2w.matrix(); Matrix4d T1t = T1.inverse() * T0; Matrix4d T2t = T2.inverse() * T0; pcl::PointCloud<pcl::PointXYZRGB>::Ptr align_cloud1(new pcl::PointCloud<pcl::PointXYZRGB>); pcl::PointCloud<pcl::PointXYZRGB>::Ptr align_cloud2(new pcl::PointCloud<pcl::PointXYZRGB>); pcl::transformPointCloud(*cloud1, *align_cloud1, T1t); pcl::transformPointCloud(*cloud2, *align_cloud2, T2t); visualize_pcd(align_cloud1,align_cloud2);
机械臂控制文件
位姿1
位姿2
-
机械臂moveit+gazebo 联合仿真报错
我按照古月居moveit视频里的操作进行配置,只是机器人描述文件换成了aubo_i5的,在运行时报如下错误:
目前能在gazebo和rviz中显示模型,但是点击execution,gazebo不会跟着运动。
由moveit配置助手生成的文件基本没有改动,只有改动了moveit_rviz.launch(也是因为一个报错,在网上找的解决办法),还有就是aubo_i5_moveit_controller_manager.launch.xml文件,如下:<launch> <!-- Set the param that trajectory_execution_manager needs to find the controller plugin --> <arg name="moveit_controller_manager" default="moveit_simple_controller_manager/MoveItSimpleControllerManager" /> <param name="moveit_controller_manager" value="$(arg moveit_controller_manager)"/> <!-- load controller_list --> <rosparam file="$(find aubo_i5_moveit_config)/config/controllers_gazebo.yaml"/> </launch>
controllers_gazebo.yaml文件如下:
controller_manager_ns: controller_manager controller_list: - name: aubo_i5_controller action_ns: follow_joint_trajectory default: True type: FollowJointTrajectory joints: - shoulder_joint - upperArm_joint - foreArm_joint - wrist1_joint - wrist2_joint - wrist3_joint
如下是moveit功能包李集成launch文件,moveit_planning_execution.launch
<launch> # The planning and execution components of MoveIt! configured to # publish the current configuration of the robot (simulated or real) # and the current state of the world as seen by the planner <include file="$(find aubo_i5_moveit_config)/launch/move_group.launch"> <arg name="publish_monitored_planning_scene" value="true" /> </include> # The visualization component of MoveIt! <include file="$(find aubo_i5_moveit_config)/launch/moveit_rviz.launch"> <arg name="config" value="true" /> </include> <!-- We do not have a robot connected, so publish fake joint states --> <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher"> <param name="/use_gui" value="false"/> <rosparam param="/source_list">[/aubo_i5/joint_states]</rosparam> </node> </launch>
move_group.launch文件如下
<launch> <!-- GDB Debug Option --> <arg name="debug" default="false" /> <arg unless="$(arg debug)" name="launch_prefix" value="" /> <arg if="$(arg debug)" name="launch_prefix" value="gdb -x $(find aubo_i5_moveit_config)/launch/gdb_settings.gdb --ex run --args" /> <!-- Verbose Mode Option --> <arg name="info" default="$(arg debug)" /> <arg unless="$(arg info)" name="command_args" value="" /> <arg if="$(arg info)" name="command_args" value="--debug" /> <!-- move_group settings --> <arg name="pipeline" default="ompl" /> <arg name="allow_trajectory_execution" default="true"/> <arg name="fake_execution" default="false"/> <arg name="fake_execution_type" default="interpolate" /> <arg name="max_safe_path_cost" default="1"/> <arg name="jiggle_fraction" default="0.05" /> <arg name="publish_monitored_planning_scene" default="true"/> <arg name="capabilities" default=""/> <arg name="disable_capabilities" default=""/> <!-- load these non-default MoveGroup capabilities (space seperated) --> <!-- <arg name="capabilities" value=" a_package/AwsomeMotionPlanningCapability another_package/GraspPlanningPipeline " /> --> <!-- inhibit these default MoveGroup capabilities (space seperated) --> <!-- <arg name="disable_capabilities" value=" move_group/MoveGroupKinematicsService move_group/ClearOctomapService " /> --> <arg name="load_robot_description" default="true" /> <!-- load URDF, SRDF and joint_limits configuration --> <include file="$(find aubo_i5_moveit_config)/launch/planning_context.launch"> <arg name="load_robot_description" value="$(arg load_robot_description)" /> </include> <!-- Planning Functionality --> <include ns="move_group" file="$(find aubo_i5_moveit_config)/launch/planning_pipeline.launch.xml"> <arg name="pipeline" value="$(arg pipeline)" /> <arg name="capabilities" value="$(arg capabilities)"/> <arg name="disable_capabilities" value="$(arg disable_capabilities)"/> </include> <!-- Trajectory Execution Functionality --> <include ns="move_group" file="$(find aubo_i5_moveit_config)/launch/trajectory_execution.launch.xml" if="$(arg allow_trajectory_execution)"> <arg name="moveit_manage_controllers" value="true" /> <arg name="moveit_controller_manager" value="aubo_i5" unless="$(arg fake_execution)"/> <arg name="moveit_controller_manager" value="fake" if="$(arg fake_execution)"/> <arg name="fake_execution_type" value="$(arg fake_execution_type)" /> </include> <!-- Sensors Functionality --> <include ns="move_group" file="$(find aubo_i5_moveit_config)/launch/sensor_manager.launch.xml" if="$(arg allow_trajectory_execution)"> <arg name="moveit_sensor_manager" value="aubo_i5" /> </include> <!-- Start the actual move_group node/action server --> <node name="move_group" launch-prefix="$(arg launch_prefix)" pkg="moveit_ros_move_group" type="move_group" respawn="false" output="screen" args="$(arg command_args)"> <!-- Set the display variable, in case OpenGL code is used internally --> <env name="DISPLAY" value="$(optenv DISPLAY :0)" /> <param name="allow_trajectory_execution" value="$(arg allow_trajectory_execution)"/> <param name="max_safe_path_cost" value="$(arg max_safe_path_cost)"/> <param name="jiggle_fraction" value="$(arg jiggle_fraction)" /> <!-- Publish the planning scene of the physical robot so that rviz plugin can know actual robot --> <param name="planning_scene_monitor/publish_planning_scene" value="$(arg publish_monitored_planning_scene)" /> <param name="planning_scene_monitor/publish_geometry_updates" value="$(arg publish_monitored_planning_scene)" /> <param name="planning_scene_monitor/publish_state_updates" value="$(arg publish_monitored_planning_scene)" /> <param name="planning_scene_monitor/publish_transforms_updates" value="$(arg publish_monitored_planning_scene)" /> </node> </launch>
-
机械臂运动角度获取
ROS1可以获取真实机械臂(AUBO-i5)的运动角度参数吗?
我的理解/想法是这样的
在仿真(未连接机械臂)过程中,机械臂获得目标坐标,经过运动学计算后获得各个关节运动角度,并在rviz中显示运动
但在实际(连接上机械臂)过程中,实体机械臂由于机械结构或者电机精度等原因存在些许误差,请问这时,rviz中显示的是以ros中计算的结果来显示还是以机械臂实际运动角度来显示?
有那个功能包或者节点能实时获取真实机械臂的运动角度初学,知识学习不够完整有所欠缺,望各位前辈能指点。感谢!
-
URDF中geometry
想请教下urdf中
visual 下的geometry 和collision下的geometry是一样的吗上图中注释部分
可以说这张图visual标签下有用的就material部分 origin和geometry可以删除掉