Giter Club home page Giter Club logo

as_6dof_arm's Introduction

Gazebo 展示

Gazebo

Real环境展示

Real Environment

URDF描述文件

  • 机械臂相关描述文件位于 as_arm_description/urdf 目录中
    • as_arm.xacro 为机械臂描述文件
    • camera.xacro 摄像机和机架描述文件
    • sink.xacro 物品槽描述文件

Launch启动相关命令:

  • 启动gazebo仿真环境:

    • roslaunch as_arm_gazebo as_arm_bringup.launch
  • 启动moveit Demo:

    • roslaunch as_arm_moveit_config demo.launch
  • 启动grasp 生成器

    • roslaunch as_arm_gazebo grasp_generator_server.launch
  • 查看摄像头图像:

    • rosrun image_view image_view image:=/camera/image_raw
  • 控制某个joint移动角度:

    • rostopic pub -1 /rrbot/joint1_position_controller/command std_msgs/Float64 "data: 1.5"
  • 获取cube位置

    • rostopic echo -n 1 /gazebo/cubes
  • 获取joint位置:

    • rostopic echo -n 1 /as_arm/joint_states
  • 获取某个link(如end effector)的世界坐标

    • rosrun tf tf_echo /world /grasp_frame_link

碰撞检测相关

  • 碰撞检测包含self-collision和environment-collision两种,相关文件如下:
    • Service描述文件: as_arm_description/srv/CheckCollisionValid.srv
    • Service服务文件(需要在catkin环境编译): as_arm_control/src/check_collision.cpp

仿真环境运行:

  • 相关控制脚本位于 _as_arm_control/test/_目录中

    • 抓取脚本: pick_and_place.py
    • moveit运动规划: test_planner.py
  • 控制gazebo joint角度:

      rostopic pub -1 /as_arm/joint1_position_controller/command std_msgs/Float64 "data: 0"
      rostopic pub -1 /as_arm/joint2_position_controller/command std_msgs/Float64 "data: 0.2834"
      rostopic pub -1 /as_arm/joint3_position_controller/command std_msgs/Float64 "data: -0.9736"
      rostopic pub -1 /as_arm/joint4_position_controller/command std_msgs/Float64 "data: -1.4648"
      rostopic pub -1 /as_arm/joint5_position_controller/command std_msgs/Float64 "data: 0"
      rostopic pub -1 /as_arm/joint6_position_controller/command std_msgs/Float64 "data: -0.015"
      rostopic pub -1 /as_arm/joint7_position_controller/command std_msgs/Float64 "data: 0.015"
    
  • 控制gazebo cube位置:

      rostopic pub -1 /gazebo/set_link_state gazebo_msgs/LinkState "{link_name: cube1, pose: {position: {x: -0.2, y: 0, z: 1.0}, orientation: {x: 0,y: 0, z: 0, w: 1.0}}, twist: {}, reference_frame: world}"
    

真实环境运行:

  • arduino 文件在 as_arm_real/data/servo_v4.0.ino
  • 启动real节点,控制真实机械臂运动:
    • roslaunch as_arm_real servo_bringup_real.launch
  • 启动gazebo仿真环境后,运行控制脚本 as_arm_real/scripts/
    • 真实环境与仿真环境机械臂同步随机运动: random_run_drive.py
    • 真实环境与仿真环境机械手同步运动: run_gripper_driver.py
    • 抓取脚本(调用ompl IK算法): pick_and_place.py

深度增强学习训练:

  • 训练脚本位于 as_arm_control/scripts/ 目录中
    • gazebo仿真环境控制和状态获取脚本: simulate_state.py
    • DDPG算法脚本(TF实现): ddpg.py
    • 仿真环境Agent接口: asm_env.py
    • 训练脚本:learning.py

更新日志 2016-11-24

  • 更改actor 网络的输出层:
    • 目前actor网络的输出的5个joint的移动角度值,增加一个输出表示cube是否在gripper的抓取范围
    • 更改actor网络输出层范围区间为[-4, 4]之间的整数
  • 更改reward计算函数 = exp(-1 * γ * dist(cube, gripper))
  • 调整摄像头视野,增加摄像头数量,组成双目摄像头
    • 提高距离感知,同时避免cube被机械臂遮挡
  • 更改噪音生成函数OuNoice的参数,防止过拟合,探索更多运动空间。
  • 训练阶段:
    • 第一阶段:一个cube,且cube初始位置不变,gripper初始位置为PreGrasp
    • 第二阶段:一个cube,且cube初始位置可变,gripper初始位置为PreGrasp
    • 第三阶段:多个cube,且cube初始位置可变,gripper初始位置为UpRight

更新日志 2016-11-17

  • 碰撞处理
    • 产生碰撞时每个关节随机选择某个(-4,4)的角度范围,并检测碰撞,直到没有检测到碰撞时执行该action
  • ddpg actor网络处理
    • 输出层更新为action_dim * 3,再reshape为(action_dim, 3),执行arg_max操作得到5个范围在[0, 2]的整数,再-1得到[-1, 1]的整数作为机械臂的输出action
  • arm 和 gripper分开处理
    • 5个arm joint 和 2个gripper joint,训练网络时只控制5个arm joint。当检测到gripper_frame和cube_pose的距离小于最小阈值时视为到达目标,执行抓取任务,并将cube物体attach到gripper上。
  • 针对gazebo中机械臂执行操作的震荡问题处理
    • 调整joint的PID参数保证快速平滑性
    • 调整link的质量属性和惯性属性,减少惯性
  • 针对gazebo joint command在话题队列中丢失的处理:
    • 增加joint command的queue队列大小,同时调整训练速度,协调与joint command执行速度的频率
  • gazebo/ros/moveit的交互通信
    • gazebo 回传摄像头图片,moveit检测碰撞,ros协调通信。涉及end effector、cube、arm_joints、gripper_joints的控制和状态信息。
    • joint相关的话题:"/joint_states"设置rviz的joints角度,"as_arm/joint_states"获取当前joints角度,"as_arm/joints_position_controller/command"设置gazebo的joints角度
    • cube相关的话题:"/gazebo/cubes"获取cube位姿, "/gazebo/set_link_state"设置cube位姿。
    • cube在moveit中使用scene.add_box()生成并与gazebo中的cube同步
  • 摄像头视野和位置的调整
  • 更改actor 网络的输出层:(Todo)
    • 目前actor网络的输出的5个joint的移动角度值,增加一个输出表示cube是否在gripper的抓取范围

as_6dof_arm's People

Contributors

yao62995 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

as_6dof_arm's Issues

grasp 生成器:Grasp configuration parameter `pregrasp_time_from_start` missing from rosparam server.

... logging to /home/forrest/.ros/log/9d404900-aaf5-11e6-b1bd-708bcda99ddb/roslaunch-forrest-7678.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://forrest:40489/
SUMMARY
========
PARAMETERS
 * /moveit_simple_grasps_server/base_link: base_link
 * /moveit_simple_grasps_server/end_effector: gripper
 * /moveit_simple_grasps_server/gripper/end_effector_name: gripper
 * /moveit_simple_grasps_server/gripper/end_effector_parent_link: gripper_link
 * /moveit_simple_grasps_server/gripper/grasp_pose_to_eef: [0.0, 0.0, 0.0]
 * /moveit_simple_grasps_server/gripper/grasp_pose_to_eef_rotation: [0.0, 0.0, 0.0]
 * /moveit_simple_grasps_server/gripper/grasp_posture: [0.0, 0.0]
 * /moveit_simple_grasps_server/gripper/grasp_time_from_start: 4.0
 * /moveit_simple_grasps_server/gripper/joints: ['finger_joint1',...
 * /moveit_simple_grasps_server/gripper/postplace_time_from_start: 4.0
 * /moveit_simple_grasps_server/gripper/pregrasp_posture: [0.015, -0.015]
 * /moveit_simple_grasps_server/gripper/pregrasp_time_from_start: 4.0
 * /moveit_simple_grasps_server/group: arm
 * /rosdistro: indigo
 * /rosversion: 1.11.20
NODES
  /
    moveit_simple_grasps_server (moveit_simple_grasps/moveit_simple_grasps_server)
ROS_MASTER_URI=http://localhost:11311
core service [/rosout] found
process[moveit_simple_grasps_server-1]: started with pid [7697]

**[ERROR] [1479200657.825976997]: Grasp configuration parameter `pregrasp_time_from_start` missing from rosparam server. Did you load your end effector's configuration yaml file? Searching in namespace: /moveit_simple_grasps_server/right
[moveit_simple_grasps_server-1] process has died [pid 7697, exit code -11, cmd /opt/ros/indigo/lib/moveit_simple_grasps/moveit_simple_grasps_server __name:=moveit_simple_grasps_server __log:=/home/forrest/.ros/log/9d404900-aaf5-11e6-b1bd-708bcda99ddb/moveit_simple_grasps_server-1.log].
log file: /home/forrest/.ros/log/9d404900-aaf5-11e6-b1bd-708bcda99ddb/moveit_simple_grasps_server-1*.log**
all processes on machine have died, roslaunch will exit
shutting down processing monitor...
... shutting down processing monitor complete
done

ERROR: cannot launch node of type [moveit_simple_grasps/moveit_simple_grasps_server]: moveit_simple_grasps

我的ROS版本是Melodic,gezebo环境,moveit Demo已经启动成功,但是在启动grasp 生成器时
roslaunch as_arm_gazebo grasp_generator_server.launch
报错

ERROR: cannot launch node of type [moveit_simple_grasps/moveit_simple_grasps_server]: moveit_simple_grasps
ROS path [0]=/opt/ros/melodic/share/ros
ROS path [1]=/home/franka/catkin_franka/src
ROS path [2]=/opt/ros/melodic/share

请问有没有人遇到这样的情况?如何解决呢?

[ 8%] Generating Lisp code from as_arm_description/CheckCollisionValid.srv
ERROR: Duplicate field names in message: ['name', 'x', 'y', 'z', 'r', 'p', 'y']
make[2]: *** [/home/wwb686/catkin_ws/devel/share/common-lisp/ros/as_arm_description/srv/CheckCollisionValid.lisp] Error 1
make[1]: *** [as_arm_description/CMakeFiles/as_arm_description_generate_messages_lisp.dir/all] Error 2
make: *** [all] Error 2
Invoking "make -j1 -l1" failed

check_collision.cpp除了自身碰撞,它不能检测与障碍物之间的碰撞吗

你好,我运行了你的check_collision.cpp的代码,我可以做到自身碰撞的检测。
Screenshot from 2019-03-19 22:56:58
Screenshot from 2019-03-19 22:57:06
但是我无法做到碰撞到障碍物的检测:在旁边增加一个书柜,让机械臂planning去碰撞那个书柜,我使用带参数的rosservice call规划去碰撞书柜,但是并不会返回碰撞到。请问是这个check_collision.cpp本来就没有检测和其他物体的碰撞吗
Screenshot from 2019-03-19 22:58:01

Screenshot from 2019-03-19 22:58:05
请问如果我需要做什么才能改成能够检测障碍物,我参考了古月的代码进行修改,但是没有任何帮助。我的修改如下:
bool CheckCollisionNode::CheckCollision(vector<double>& values) { RobotState& robot_state = this->m_planScene->getCurrentStateNonConst(); collision_detection::AllowedCollisionMatrix acm = this->m_planScene->getAllowedCollisionMatrixNonConst(); robot_state::RobotState copied_state = this->m_planScene->getCurrentState(); collision_detection::CollisionResult::ContactMap::const_iterator it2; int k=0; for(it2=this->m_collResult.contacts.begin(); it2!=this->m_collResult.contacts.end(); ++it2,k++){ acm.setEntry(it2->first.first,it2->first.second,true); } // format Float64MultiArray to vector<double> printf("\nhere is the %d joint state:\n",k); for (int i = 0; i < this->m_jointNames.size(); i++) { this->m_jointValues[i] = values[i]; robot_state.setJointPositions(this->m_jointNames[i], &this->m_jointValues[i]); printf("\t%f\n",this->m_jointValues[i]); } // check m_collResult.clear();//Self m_planScene->checkCollision(this->m_collRequest, this->m_collResult, copied_state, acm); return this->m_collResult.collision; }
Screenshot from 2019-03-19 22:55:42

gazebo:can't locate node [cube_link_pose.py] in package [as_arm_gazebo]

ROS_MASTER_URI=http://localhost:11311
core service [/rosout] found
process[gazebo-1]: started with pid [10146]
process[gazebo_gui-2]: started with pid [10150]
process[urdf_spawner-3]: started with pid [10154]
process[object_spawner-4]: started with pid [10155]
process[as_arm/joint_controller_spawner-5]: started with pid [10156]
process[robot_state_publisher-6]: started with pid [10157]
ERROR: cannot launch node of type [as_arm_gazebo/cube_link_pose.py]: can't locate node [cube_link_pose.py] in package [as_arm_gazebo]
process[arm_image_view-8]: started with pid [10158]
process[as_arm/controller_spawner-9]: started with pid [10171]
ERROR: cannot launch node of type [as_arm_gazebo/arm_joint_pose.py]: can't locate node [arm_joint_pose.py] in package [as_arm_gazebo]
ERROR: cannot launch node of type [as_arm_gazebo/arm_joint_sync.py]: can't locate node [arm_joint_sync.py] in package [as_arm_gazebo]
[ INFO] [1479139896.341562149]: Using transport "raw"
Gazebo multi-robot simulator, version 2.2.6
Copyright (C) 2012-2014 Open Source Robotics Foundation.
Released under the Apache 2 License.
http://gazebosim.org
spawn_model script started
spawn_model script started
Msg Waiting for master
Msg Connected to gazebo master @ http://127.0.0.1:11345
Msg Publicized address: 192.168.1.139
[ WARN] [1479139896.555830036]: Shutdown request received.
[ WARN] [1479139896.555887261]: Reason given for shutdown: [new node registered with same name]
Gazebo multi-robot simulator, version 2.2.6
Copyright (C) 2012-2014 Open Source Robotics Foundation.
Released under the Apache 2 License.
http://gazebosim.org
[INFO] [WallTime: 1479139896.645401] [0.000000] Loading model xml from ros parameter
[INFO] [WallTime: 1479139896.648743] [0.000000] Waiting for service /gazebo/spawn_urdf_model
Exception [Master.cc:50] Unable to start server[bind: Address already in use]. There is probably another Gazebo process running.
Exception [Master.cc:50] Unable to start server[bind: Address already in use]. There is probably another Gazebo process running.
[INFO] [WallTime: 1479139896.652836] [0.000000] Loading model xml from ros parameter
[INFO] [WallTime: 1479139896.655255] [0.000000] Waiting for service /gazebo/spawn_urdf_model
[INFO] [WallTime: 1479139896.720502] [0.000000] Controller Spawner: Waiting for service controller_manager/load_controller
[gazebo-1] process has died [pid 10146, exit code 255, cmd /opt/ros/indigo/lib/gazebo_ros/gzserver -e ode worlds/empty.world __name:=gazebo __log:=/home/forrest/.ros/log/f2f8f1ce-aa70-11e6-9181-708bcda99ddb/gazebo-1.log].
log file: /home/forrest/.ros/log/f2f8f1ce-aa70-11e6-9181-708bcda99ddb/gazebo-1*.log

在执行roslaunch as_arm_gazebo as_arm_bringup.launch的时候,出现这个问题.
相机小窗没有图片,点击的时候会出现没有图像数据的warning.
是需要修改cmakelist的什么地方么?

配置:
ubuntu14.04
ros-indigo
gazebo2.2.6

gazebo:unknown macro name: xacro:base None(as_arm_bringup.launch)

你好,我在运行roslaunch as_arm_gazebo as_arm_bringup.launch时候报错unknown macro name: xacro:base None None
Screenshot from 2019-05-24 23-36-09
从报错上看应是load模型时候出了问题,采用的是原程序的command="$(find xacro)/xacro.py '$(find as_arm_description)/urdf/as_arm.xacro'"
请问应该怎么解决?
配置:
Ubuntu16.04
ros-kinetic
Gazebo 7.15.0

/usr/bin/ld: 找不到 -lpthreads

Determining if the pthread_create exist failed with the following output:
Change Dir: /home/x/arm_master/build/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_dcc45/fast"
/usr/bin/make -f CMakeFiles/cmTC_dcc45.dir/build.make CMakeFiles/cmTC_dcc45.dir/build
make[1]: Entering directory '/home/x/arm_master/build/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_dcc45.dir/CheckSymbolExists.c.o
/usr/bin/cc -o CMakeFiles/cmTC_dcc45.dir/CheckSymbolExists.c.o -c /home/x/arm_master/build/CMakeFiles/CMakeTmp/CheckSymbolExists.c
Linking C executable cmTC_dcc45
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_dcc45.dir/link.txt --verbose=1
/usr/bin/cc CMakeFiles/cmTC_dcc45.dir/CheckSymbolExists.c.o -o cmTC_dcc45 -rdynamic
CMakeFiles/cmTC_dcc45.dir/CheckSymbolExists.c.o:在函数‘main’中:
CheckSymbolExists.c:(.text+0x16):对‘pthread_create’未定义的引用
collect2: error: ld returned 1 exit status
CMakeFiles/cmTC_dcc45.dir/build.make:97: recipe for target 'cmTC_dcc45' failed
make[1]: *** [cmTC_dcc45] Error 1
make[1]: Leaving directory '/home/x/arm_master/build/CMakeFiles/CMakeTmp'
Makefile:126: recipe for target 'cmTC_dcc45/fast' failed
make: *** [cmTC_dcc45/fast] Error 2

File /home/x/arm_master/build/CMakeFiles/CMakeTmp/CheckSymbolExists.c:
/* */
#include <pthread.h>

int main(int argc, char** argv)
{
(void)argv;
#ifndef pthread_create
return ((int*)(&pthread_create))[argc];
#else
(void)argc;
return 0;
#endif
}

Determining if the function pthread_create exists in the pthreads failed with the following output:
Change Dir: /home/x/arm_master/build/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_abdcb/fast"
/usr/bin/make -f CMakeFiles/cmTC_abdcb.dir/build.make CMakeFiles/cmTC_abdcb.dir/build
make[1]: Entering directory '/home/x/arm_master/build/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_abdcb.dir/CheckFunctionExists.c.o
/usr/bin/cc -DCHECK_FUNCTION_EXISTS=pthread_create -o CMakeFiles/cmTC_abdcb.dir/CheckFunctionExists.c.o -c /usr/share/cmake-3.5/Modules/CheckFunctionExists.c
Linking C executable cmTC_abdcb
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_abdcb.dir/link.txt --verbose=1
/usr/bin/cc -DCHECK_FUNCTION_EXISTS=pthread_create CMakeFiles/cmTC_abdcb.dir/CheckFunctionExists.c.o -o cmTC_abdcb -rdynamic -lpthreads
/usr/bin/ld: 找不到 -lpthreads
collect2: error: ld returned 1 exit status
CMakeFiles/cmTC_abdcb.dir/build.make:97: recipe for target 'cmTC_abdcb' failed
make[1]: *** [cmTC_abdcb] Error 1
make[1]: Leaving directory '/home/x/arm_master/build/CMakeFiles/CMakeTmp'
Makefile:126: recipe for target 'cmTC_abdcb/fast' failed
make: *** [cmTC_abdcb/fast] Error 2
请问这个要怎么配置

CheckCollisionValid.h:No such file or directory

~/catkin_ws/src/AS_6Dof_Arm/as_arm_control/src/check_collision.cpp:11:52: fatal error: as_arm_description/CheckCollisionValid.h: No such file or directory
 #include <as_arm_description/CheckCollisionValid.h>
                                                    ^
compilation terminated.
make[2]: *** [AS_6Dof_Arm/as_arm_control/CMakeFiles/check_collision.dir/src/check_collision.cpp.o] Error 1
make[1]: *** [AS_6Dof_Arm/as_arm_control/CMakeFiles/check_collision.dir/all] Error 2
make: *** [all] Error 2
Invoking "make -j8 -l8" failed

作者你好,在工作空间中运行catkin_make的时候出现上述问题,请问该怎么解决?

环境:
ubuntu14.04
ros-indigo
gazebo2.0:使用sudo apt-get install安装的

English Description

I like this project, but don't understand the ReadMe etc. Could you please translate it to English? Thank you

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.