rt-net / crane_x7_ros Goto Github PK
View Code? Open in Web Editor NEWCRANE-X7 ROS / ROS 2 Packages.
Home Page: http://wiki.ros.org/crane_x7
License: Apache License 2.0
CRANE-X7 ROS / ROS 2 Packages.
Home Page: http://wiki.ros.org/crane_x7
License: Apache License 2.0
教科書で説明しやすいように各関節に通し番号を付与したい。
例えばこのサンプルを参考にして、軸角度を変えるサンプルを追加する。
https://github.com/rt-net/sciurus17_ros/blob/master/sciurus17_examples/scripts/waist_joint_trajectory_example.py
demo.launch
の argument fake_execution
はシンプルでよいと思いますが入力時に補完が効かないので、例えば sim
などもう少し短くてわかりやすい名称に変更してもよいと思います。
REP144: http://www.ros.org/reps/rep-0144.html#naming-rules
関連するPR: ros/rosdistro#19477
crane_x7_ros
に package.xml
を追加してメタパッケージ化する
ROS2への対応予定はありますか。
多くの機械学習モデルがPython3系で公開されているので、ROS2で利用できるとありがたいです。
crane_x7_bringup
には起動に必要なファイルのみを同梱し、サンプルスクリプトはcrane_x7_example
のようなパッケージを作成してそちらに移植する
'/crane_x7/gripper_controller/gripper_cmd'へのアクセス方法についてサンプルコードがあったほうがよい。
Hello,
Gripper joint is Position Joint, why use Effort Joint?("arg use_effort_gripper")
Thankyou!
preset_reconfigure.pyを使用して、PIDゲインをプリセットした。
その後、MoveGroupCommanderを使ってgripperを動かそうとしたが、gripperが動かない。
以下のようなWARNINGが表示される。
実行したノード側
[ INFO] [1549266826.331669047]: ABORTED: Solution found but controller failed during execution
MoveGroup側
[ INFO] [1549266878.110681061]: Combined planning and execution request received for MoveGroup action. Forwarding to planning and execution pipeline.
[ INFO] [1549266878.110724622]: Planning attempt 1 of at most 1
[ INFO] [1549266878.110957243]: Planner configuration 'gripper' will use planner 'geometric::RRTConnect'. Additional configuration parameters will be set when the planner is constructed.
[ INFO] [1549266878.111047362]: RRTConnect: Starting planning with 1 states already in datastructure
[ INFO] [1549266878.122025542]: RRTConnect: Created 5 states (2 start + 3 goal)
[ INFO] [1549266878.122045365]: Solution found in 0.011030 seconds
[ INFO] [1549266878.129828240]: SimpleSetup: Path simplification took 0.007764 seconds and changed from 4 to 2 states
[ WARN] [1549266878.569546134]: Controller handle /crane_x7/gripper_controller reports status ABORTED
[ INFO] [1549266878.569578106]: Completed trajectory execution with status ABORTED ...
また、preset_reconfigure.pyのコールバックにsleepを入れると、プリセット後もgripperが動くようになった。
def preset_no_callback(self, no):
joint_no = 0
for conf in self.reconfigure:
conf["client"].update_configuration( {"position_p_gain":self.preset_list[no.data][joint_no]["p_gain"],"position_i_gain":self.preset_list[no.data][joint_no]["i_gain"],"position_d_gain":self.preset_list[no.data][joint_no]["d_gain"]} )
joint_no = joint_no + 1
+ rospy.sleep(0.1)
Joint名が間違えているので修正すること
誤:r_hand_joint
正:crane_x7_gripper_finger_a_joint
制限角度や重量、重心位置などのハードウェア情報が古いので最新データに更新した方が良い。
https://github.com/ros/rosdistro にPRを出す。
CMake Warning at /home/ubuntu/catkin_ws/build/crane_x7_ros/crane_x7_msgs/cmake/crane_x7_msgs-genmsg.cmake:3 (message):
Invoking generate_messages() without having added any message or service
file before.
You should either add add_message_files() and/or add_service_files() calls
or remove the invocation of generate_messages().
Call Stack (most recent call first):
/opt/ros/kinetic/share/genmsg/cmake/genmsg-extras.cmake:307 (include)
crane_x7_ros/crane_x7_msgs/CMakeLists.txt:10 (generate_messages)
MoveIt!で障害物回避を行うサンプルコードが欲しい
bringupパッケージを追加するなどして簡単に起動して確認する方法をまとめる。
実機とシミュレータそれぞれについて起動の仕方と使い方の説明を書く。
'crane_x7_control'、'crane_x7_description'がパッケージのインストール操作に対応できていないので、'CMakeLists.txt'を適切に修正する必要がある。
installの動作確認を実施した時に他の漏れもあれば対応する。
fake_controllerとcrane_x7_controlパッケージの起動選択が正しく機能していません.
中途半端なlaunchになっておりどちらも正常に動作しない.
crane_x7_ros/crane_x7/package.xml
に crane_x7_gazebo
を追加するかどうかを決めるcrane_x7_ros/crane_x7_gazebo/package.xml
に crane_x7_control
等(要調査)を追加する次のコマンドでdisplay.launchを実行しましたが、
エラーが表示され、モデルが正常に描画されませんでした。
$ roslaunch crane_x7_description display.launch
実行環境はUbuntu18.04、ROS Melodicです。
エラーログ
roslaunch crane_x7_description display.launch
... logging to /home/shotaak/.ros/log/b8a8d610-4e0a-11ea-a521-b88584a3c7d9/roslaunch-shotaak-Alienware-Aurora-R7-12907.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.
xacro: in-order processing became default in ROS Melodic. You can drop the option.
Deprecated: xacro tag 'crane_x7' w/o 'xacro:' xml namespace prefix (will be forbidden in Noetic)
when processing file: /home/shotaak/catkin_ws/src/crane_x7_ros/crane_x7_description/urdf/crane_x7.urdf.xacro
Use the following command to fix incorrect tag usage:
find . -iname "*.xacro" | xargs sed -i 's#<\([/]\?\)\(if\|unless\|include\|arg\|property\|macro\|insert_block\)#<\1xacro:\2#g'
started roslaunch server http://shotaak-Alienware-Aurora-R7:44771/
SUMMARY
========
PARAMETERS
* /rate: 10
* /robot_description: <?xml version="1....
* /rosdistro: melodic
* /rosversion: 1.14.3
* /source_list: ['joint_states_so...
* /use_gui: True
NODES
/
joint_state_publisher (joint_state_publisher/joint_state_publisher)
robot_state_publisher (robot_state_publisher/robot_state_publisher)
rviz (rviz/rviz)
auto-starting new master
process[master]: started with pid [12930]
ROS_MASTER_URI=http://localhost:11311
setting /run_id to b8a8d610-4e0a-11ea-a521-b88584a3c7d9
process[rosout-1]: started with pid [12941]
started core service [/rosout]
process[joint_state_publisher-2]: started with pid [12944]
process[robot_state_publisher-3]: started with pid [12945]
process[rviz-4]: started with pid [12946]
[WARN] [1581561855.692786]: The 'use_gui' parameter was specified, which is deprecated. We'll attempt to find and run the GUI, but if this fails you should install the 'joint_state_publisher_gui' package instead and run that. This backwards compatibility option will be removed in Noetic.
[ERROR] [1581561855.693473]: Could not find the GUI, install the 'joint_state_publisher_gui' package
[joint_state_publisher-2] process has died [pid 12944, exit code 1, cmd /opt/ros/melodic/lib/joint_state_publisher/joint_state_publisher __name:=joint_state_publisher __log:=/home/shotaak/.ros/log/b8a8d610-4e0a-11ea-a521-b88584a3c7d9/joint_state_publisher-2.log].
log file: /home/shotaak/.ros/log/b8a8d610-4e0a-11ea-a521-b88584a3c7d9/joint_state_publisher-2*.log
MoveIt!のjoint_limits.yamlで定義しているmax_acceleration設定がハードウェアに対応した値になっていない。最新のハードウェアに適した値に修正すべきである。
CRANE-X7のROSパッケージはどうやらmelodicでも動くようだが、アールティでエビデンスが取れてない。
正式にサポートを表明したいので、動作検証してkineticと異なる箇所があればbranchを分けて対応コードを公開したいと考えています。
エラーが出る時と出ない時の差がまだわかっていませんが、USB未接続時にcrane_x7_controlを起動するとエラーが出る場合があります。
[PortHandlerLinux::SetupPort] Error opening serial port!
[ INFO] [1539416433.446369738]: SKIP SELF CHECK...
terminate called after throwing an instance of 'std::runtime_error'
what(): Duration is out of dual 32-bit range
[INFO] [1539416433.581602]: Controller Spawner: Waiting for service controller_manager/load_controller
[INFO] [1539416433.582375]: Controller Spawner: Waiting for service controller_manager/switch_controller
[INFO] [1539416433.583056]: Controller Spawner: Waiting for service controller_manager/unload_controller
[INFO] [1539416433.583743]: Loading controller: joint_state_controller
Traceback (most recent call last):
File "/opt/ros/kinetic/lib/controller_manager/spawner", line 207, in <module>
if __name__ == '__main__': main()
File "/opt/ros/kinetic/lib/controller_manager/spawner", line 185, in main
resp = load_controller(name)
File "/opt/ros/kinetic/lib/python2.7/dist-packages/rospy/impl/tcpros_service.py", line 435, in __call__
return self.call(*args, **kwds)
File "/opt/ros/kinetic/lib/python2.7/dist-packages/rospy/impl/tcpros_service.py", line 505, in call
raise ServiceException("unable to connect to service: %s"%e)
rospy.service.ServiceException: unable to connect to service: [Errno 104] Connection reset by peer
[crane_x7/crane_x7_control-3] process has died [pid 13425, exit code -6, cmd /home/rt-user/catkin_ws/devel/lib/crane_x7_control/crane_x7_control __name:=crane_x7_control __log:=/home/rt-user/.ros/log/43a91a8e-cebb-11e8-a6f2-b46bfcb8910b/crane_x7-crane_x7_control-3.log].
log file: /home/rt-user/.ros/log/43a91a8e-cebb-11e8-a6f2-b46bfcb8910b/crane_x7-crane_x7_control-3*.log
[INFO] [1539416433.753274]: Shutting down spawner. Stopping and unloading controllers...
[INFO] [1539416433.753846]: Stopping all controllers...
[WARN] [1539416433.757798]: Controller Spawner error while taking down controllers: unable to connect to service: [Errno 111] Connection refused
[crane_x7/controller_manager-2] process has died [pid 13424, exit code 1, cmd /opt/ros/kinetic/lib/controller_manager/spawner joint_state_controller arm_controller gripper_controller __name:=controller_manager __log:=/home/rt-user/.ros/log/43a91a8e-cebb-11e8-a6f2-b46bfcb8910b/crane_x7-controller_manager-2.log].
log file: /home/rt-user/.ros/log/43a91a8e-cebb-11e8-a6f2-b46bfcb8910b/crane_x7-controller_manager-2*.log
$ roslaunch crane_x7_control crane_x7_control.launch
... logging to /home/rt-user/.ros/log/43a91a8e-cebb-11e8-a6f2-b46bfcb8910b/roslaunch-rt-user-zenbookpro-13380.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://192.168.10.128:41827/
SUMMARY
========
PARAMETERS
* /crane_x7/arm_controller/joints: ['crane_x7_should...
* /crane_x7/arm_controller/publish_rate: 250
* /crane_x7/arm_controller/type: position_controll...
* /crane_x7/crane_x7_control/arm_controller/joints: ['crane_x7_should...
* /crane_x7/crane_x7_control/arm_controller/publish_rate: 250
* /crane_x7/crane_x7_control/arm_controller/type: position_controll...
* /crane_x7/crane_x7_control/dynamixel_port/baud_rate: 3000000
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_gripper_finger_a_joint/center: 2048
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_gripper_finger_a_joint/effort_const: 1.79
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_gripper_finger_a_joint/home: 2048
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_gripper_finger_a_joint/id: 9
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_gripper_finger_a_joint/mode: 3
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_lower_arm_fixed_part_joint/center: 2048
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_lower_arm_fixed_part_joint/effort_const: 1.79
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_lower_arm_fixed_part_joint/home: 2048
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_lower_arm_fixed_part_joint/id: 6
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_lower_arm_fixed_part_joint/mode: 3
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_lower_arm_revolute_part_joint/center: 2048
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_lower_arm_revolute_part_joint/effort_const: 1.79
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_lower_arm_revolute_part_joint/home: 2048
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_lower_arm_revolute_part_joint/id: 7
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_lower_arm_revolute_part_joint/mode: 3
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_shoulder_fixed_part_pan_joint/center: 2048
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_shoulder_fixed_part_pan_joint/effort_const: 1.79
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_shoulder_fixed_part_pan_joint/home: 2048
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_shoulder_fixed_part_pan_joint/id: 2
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_shoulder_fixed_part_pan_joint/mode: 3
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_shoulder_revolute_part_tilt_joint/center: 2048
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_shoulder_revolute_part_tilt_joint/effort_const: 2.79
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_shoulder_revolute_part_tilt_joint/home: 2048
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_shoulder_revolute_part_tilt_joint/id: 3
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_shoulder_revolute_part_tilt_joint/mode: 3
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_upper_arm_revolute_part_rotate_joint/center: 2048
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_upper_arm_revolute_part_rotate_joint/effort_const: 1.79
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_upper_arm_revolute_part_rotate_joint/home: 2048
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_upper_arm_revolute_part_rotate_joint/id: 5
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_upper_arm_revolute_part_rotate_joint/mode: 3
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_upper_arm_revolute_part_twist_joint/center: 2048
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_upper_arm_revolute_part_twist_joint/effort_const: 1.79
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_upper_arm_revolute_part_twist_joint/home: 2048
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_upper_arm_revolute_part_twist_joint/id: 4
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_upper_arm_revolute_part_twist_joint/mode: 3
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_wrist_joint/center: 2048
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_wrist_joint/effort_const: 1.79
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_wrist_joint/home: 2048
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_wrist_joint/id: 8
* /crane_x7/crane_x7_control/dynamixel_port/crane_x7_wrist_joint/mode: 3
* /crane_x7/crane_x7_control/dynamixel_port/joints: ['crane_x7_should...
* /crane_x7/crane_x7_control/dynamixel_port/port_name: /dev/ttyUSB0
* /crane_x7/crane_x7_control/gripper_controller/joint: crane_x7_gripper_...
* /crane_x7/crane_x7_control/gripper_controller/publish_rate: 250
* /crane_x7/crane_x7_control/gripper_controller/type: position_controll...
* /crane_x7/crane_x7_control/joint_limits/arm_joint1/has_acceleration_limits: False
* /crane_x7/crane_x7_control/joint_limits/arm_joint1/has_effort_limits: True
* /crane_x7/crane_x7_control/joint_limits/arm_joint1/has_jerk_limits: False
* /crane_x7/crane_x7_control/joint_limits/arm_joint1/has_position_limits: True
* /crane_x7/crane_x7_control/joint_limits/arm_joint1/has_velocity_limits: True
* /crane_x7/crane_x7_control/joint_limits/arm_joint1/max_effort: 4.0
* /crane_x7/crane_x7_control/joint_limits/arm_joint1/max_position: 1.5707963268
* /crane_x7/crane_x7_control/joint_limits/arm_joint1/max_velocity: 5.969211435
* /crane_x7/crane_x7_control/joint_limits/arm_joint1/min_position: -1.5707963268
* /crane_x7/crane_x7_control/joint_limits/arm_joint2/has_acceleration_limits: False
* /crane_x7/crane_x7_control/joint_limits/arm_joint2/has_effort_limits: True
* /crane_x7/crane_x7_control/joint_limits/arm_joint2/has_jerk_limits: False
* /crane_x7/crane_x7_control/joint_limits/arm_joint2/has_position_limits: True
* /crane_x7/crane_x7_control/joint_limits/arm_joint2/has_velocity_limits: True
* /crane_x7/crane_x7_control/joint_limits/arm_joint2/max_effort: 4.0
* /crane_x7/crane_x7_control/joint_limits/arm_joint2/max_position: 0.0
* /crane_x7/crane_x7_control/joint_limits/arm_joint2/max_velocity: 5.969211435
* /crane_x7/crane_x7_control/joint_limits/arm_joint2/min_position: -1.5707963268
* /crane_x7/crane_x7_control/joint_limits/arm_joint3/has_acceleration_limits: False
* /crane_x7/crane_x7_control/joint_limits/arm_joint3/has_effort_limits: True
* /crane_x7/crane_x7_control/joint_limits/arm_joint3/has_jerk_limits: False
* /crane_x7/crane_x7_control/joint_limits/arm_joint3/has_position_limits: True
* /crane_x7/crane_x7_control/joint_limits/arm_joint3/has_velocity_limits: True
* /crane_x7/crane_x7_control/joint_limits/arm_joint3/max_effort: 4.0
* /crane_x7/crane_x7_control/joint_limits/arm_joint3/max_position: 1.5707963268
* /crane_x7/crane_x7_control/joint_limits/arm_joint3/max_velocity: 5.969211435
* /crane_x7/crane_x7_control/joint_limits/arm_joint3/min_position: -1.5707963268
* /crane_x7/crane_x7_control/joint_limits/arm_joint4/has_acceleration_limits: False
* /crane_x7/crane_x7_control/joint_limits/arm_joint4/has_effort_limits: True
* /crane_x7/crane_x7_control/joint_limits/arm_joint4/has_jerk_limits: False
* /crane_x7/crane_x7_control/joint_limits/arm_joint4/has_position_limits: True
* /crane_x7/crane_x7_control/joint_limits/arm_joint4/has_velocity_limits: True
* /crane_x7/crane_x7_control/joint_limits/arm_joint4/max_effort: 4.0
* /crane_x7/crane_x7_control/joint_limits/arm_joint4/max_position: 2.726204
* /crane_x7/crane_x7_control/joint_limits/arm_joint4/max_velocity: 5.969211435
* /crane_x7/crane_x7_control/joint_limits/arm_joint4/min_position: 0.0
* /crane_x7/crane_x7_control/joint_limits/arm_joint5/has_acceleration_limits: False
* /crane_x7/crane_x7_control/joint_limits/arm_joint5/has_effort_limits: True
* /crane_x7/crane_x7_control/joint_limits/arm_joint5/has_jerk_limits: False
* /crane_x7/crane_x7_control/joint_limits/arm_joint5/has_position_limits: True
* /crane_x7/crane_x7_control/joint_limits/arm_joint5/has_velocity_limits: True
* /crane_x7/crane_x7_control/joint_limits/arm_joint5/max_effort: 4.0
* /crane_x7/crane_x7_control/joint_limits/arm_joint5/max_position: 1.5707963268
* /crane_x7/crane_x7_control/joint_limits/arm_joint5/max_velocity: 5.969211435
* /crane_x7/crane_x7_control/joint_limits/arm_joint5/min_position: -1.5707963268
* /crane_x7/crane_x7_control/joint_limits/arm_joint6/has_acceleration_limits: False
* /crane_x7/crane_x7_control/joint_limits/arm_joint6/has_effort_limits: True
* /crane_x7/crane_x7_control/joint_limits/arm_joint6/has_jerk_limits: False
* /crane_x7/crane_x7_control/joint_limits/arm_joint6/has_position_limits: True
* /crane_x7/crane_x7_control/joint_limits/arm_joint6/has_velocity_limits: True
* /crane_x7/crane_x7_control/joint_limits/arm_joint6/max_effort: 4.0
* /crane_x7/crane_x7_control/joint_limits/arm_joint6/max_position: 1.047196
* /crane_x7/crane_x7_control/joint_limits/arm_joint6/max_velocity: 5.969211435
* /crane_x7/crane_x7_control/joint_limits/arm_joint6/min_position: -2.094395
* /crane_x7/crane_x7_control/joint_limits/arm_joint7/has_acceleration_limits: False
* /crane_x7/crane_x7_control/joint_limits/arm_joint7/has_effort_limits: True
* /crane_x7/crane_x7_control/joint_limits/arm_joint7/has_jerk_limits: False
* /crane_x7/crane_x7_control/joint_limits/arm_joint7/has_position_limits: True
* /crane_x7/crane_x7_control/joint_limits/arm_joint7/has_velocity_limits: True
* /crane_x7/crane_x7_control/joint_limits/arm_joint7/max_effort: 4.0
* /crane_x7/crane_x7_control/joint_limits/arm_joint7/max_position: 2.96706
* /crane_x7/crane_x7_control/joint_limits/arm_joint7/max_velocity: 5.969211435
* /crane_x7/crane_x7_control/joint_limits/arm_joint7/min_position: -2.96706
* /crane_x7/crane_x7_control/joint_limits/hand_joint1/has_acceleration_limits: False
* /crane_x7/crane_x7_control/joint_limits/hand_joint1/has_effort_limits: True
* /crane_x7/crane_x7_control/joint_limits/hand_joint1/has_jerk_limits: False
* /crane_x7/crane_x7_control/joint_limits/hand_joint1/has_position_limits: True
* /crane_x7/crane_x7_control/joint_limits/hand_joint1/has_velocity_limits: True
* /crane_x7/crane_x7_control/joint_limits/hand_joint1/max_effort: 4.0
* /crane_x7/crane_x7_control/joint_limits/hand_joint1/max_position: 0.523598776
* /crane_x7/crane_x7_control/joint_limits/hand_joint1/max_velocity: 5.969211435
* /crane_x7/crane_x7_control/joint_limits/hand_joint1/min_position: 0.0
* /crane_x7/crane_x7_control/joint_state_controller/publish_rate: 250
* /crane_x7/crane_x7_control/joint_state_controller/type: joint_state_contr...
* /crane_x7/dynamixel_port/baud_rate: 3000000
* /crane_x7/dynamixel_port/crane_x7_gripper_finger_a_joint/center: 2048
* /crane_x7/dynamixel_port/crane_x7_gripper_finger_a_joint/effort_const: 1.79
* /crane_x7/dynamixel_port/crane_x7_gripper_finger_a_joint/home: 2048
* /crane_x7/dynamixel_port/crane_x7_gripper_finger_a_joint/id: 9
* /crane_x7/dynamixel_port/crane_x7_gripper_finger_a_joint/mode: 3
* /crane_x7/dynamixel_port/crane_x7_lower_arm_fixed_part_joint/center: 2048
* /crane_x7/dynamixel_port/crane_x7_lower_arm_fixed_part_joint/effort_const: 1.79
* /crane_x7/dynamixel_port/crane_x7_lower_arm_fixed_part_joint/home: 2048
* /crane_x7/dynamixel_port/crane_x7_lower_arm_fixed_part_joint/id: 6
* /crane_x7/dynamixel_port/crane_x7_lower_arm_fixed_part_joint/mode: 3
* /crane_x7/dynamixel_port/crane_x7_lower_arm_revolute_part_joint/center: 2048
* /crane_x7/dynamixel_port/crane_x7_lower_arm_revolute_part_joint/effort_const: 1.79
* /crane_x7/dynamixel_port/crane_x7_lower_arm_revolute_part_joint/home: 2048
* /crane_x7/dynamixel_port/crane_x7_lower_arm_revolute_part_joint/id: 7
* /crane_x7/dynamixel_port/crane_x7_lower_arm_revolute_part_joint/mode: 3
* /crane_x7/dynamixel_port/crane_x7_shoulder_fixed_part_pan_joint/center: 2048
* /crane_x7/dynamixel_port/crane_x7_shoulder_fixed_part_pan_joint/effort_const: 1.79
* /crane_x7/dynamixel_port/crane_x7_shoulder_fixed_part_pan_joint/home: 2048
* /crane_x7/dynamixel_port/crane_x7_shoulder_fixed_part_pan_joint/id: 2
* /crane_x7/dynamixel_port/crane_x7_shoulder_fixed_part_pan_joint/mode: 3
* /crane_x7/dynamixel_port/crane_x7_shoulder_revolute_part_tilt_joint/center: 2048
* /crane_x7/dynamixel_port/crane_x7_shoulder_revolute_part_tilt_joint/effort_const: 2.79
* /crane_x7/dynamixel_port/crane_x7_shoulder_revolute_part_tilt_joint/home: 2048
* /crane_x7/dynamixel_port/crane_x7_shoulder_revolute_part_tilt_joint/id: 3
* /crane_x7/dynamixel_port/crane_x7_shoulder_revolute_part_tilt_joint/mode: 3
* /crane_x7/dynamixel_port/crane_x7_upper_arm_revolute_part_rotate_joint/center: 2048
* /crane_x7/dynamixel_port/crane_x7_upper_arm_revolute_part_rotate_joint/effort_const: 1.79
* /crane_x7/dynamixel_port/crane_x7_upper_arm_revolute_part_rotate_joint/home: 2048
* /crane_x7/dynamixel_port/crane_x7_upper_arm_revolute_part_rotate_joint/id: 5
* /crane_x7/dynamixel_port/crane_x7_upper_arm_revolute_part_rotate_joint/mode: 3
* /crane_x7/dynamixel_port/crane_x7_upper_arm_revolute_part_twist_joint/center: 2048
* /crane_x7/dynamixel_port/crane_x7_upper_arm_revolute_part_twist_joint/effort_const: 1.79
* /crane_x7/dynamixel_port/crane_x7_upper_arm_revolute_part_twist_joint/home: 2048
* /crane_x7/dynamixel_port/crane_x7_upper_arm_revolute_part_twist_joint/id: 4
* /crane_x7/dynamixel_port/crane_x7_upper_arm_revolute_part_twist_joint/mode: 3
* /crane_x7/dynamixel_port/crane_x7_wrist_joint/center: 2048
* /crane_x7/dynamixel_port/crane_x7_wrist_joint/effort_const: 1.79
* /crane_x7/dynamixel_port/crane_x7_wrist_joint/home: 2048
* /crane_x7/dynamixel_port/crane_x7_wrist_joint/id: 8
* /crane_x7/dynamixel_port/crane_x7_wrist_joint/mode: 3
* /crane_x7/dynamixel_port/joints: ['crane_x7_should...
* /crane_x7/dynamixel_port/port_name: /dev/ttyUSB0
* /crane_x7/gripper_controller/joint: crane_x7_gripper_...
* /crane_x7/gripper_controller/publish_rate: 250
* /crane_x7/gripper_controller/type: position_controll...
* /crane_x7/joint_limits/arm_joint1/has_acceleration_limits: False
* /crane_x7/joint_limits/arm_joint1/has_effort_limits: True
* /crane_x7/joint_limits/arm_joint1/has_jerk_limits: False
* /crane_x7/joint_limits/arm_joint1/has_position_limits: True
* /crane_x7/joint_limits/arm_joint1/has_velocity_limits: True
* /crane_x7/joint_limits/arm_joint1/max_effort: 4.0
* /crane_x7/joint_limits/arm_joint1/max_position: 1.5707963268
* /crane_x7/joint_limits/arm_joint1/max_velocity: 5.969211435
* /crane_x7/joint_limits/arm_joint1/min_position: -1.5707963268
* /crane_x7/joint_limits/arm_joint2/has_acceleration_limits: False
* /crane_x7/joint_limits/arm_joint2/has_effort_limits: True
* /crane_x7/joint_limits/arm_joint2/has_jerk_limits: False
* /crane_x7/joint_limits/arm_joint2/has_position_limits: True
* /crane_x7/joint_limits/arm_joint2/has_velocity_limits: True
* /crane_x7/joint_limits/arm_joint2/max_effort: 4.0
* /crane_x7/joint_limits/arm_joint2/max_position: 0.0
* /crane_x7/joint_limits/arm_joint2/max_velocity: 5.969211435
* /crane_x7/joint_limits/arm_joint2/min_position: -1.5707963268
* /crane_x7/joint_limits/arm_joint3/has_acceleration_limits: False
* /crane_x7/joint_limits/arm_joint3/has_effort_limits: True
* /crane_x7/joint_limits/arm_joint3/has_jerk_limits: False
* /crane_x7/joint_limits/arm_joint3/has_position_limits: True
* /crane_x7/joint_limits/arm_joint3/has_velocity_limits: True
* /crane_x7/joint_limits/arm_joint3/max_effort: 4.0
* /crane_x7/joint_limits/arm_joint3/max_position: 1.5707963268
* /crane_x7/joint_limits/arm_joint3/max_velocity: 5.969211435
* /crane_x7/joint_limits/arm_joint3/min_position: -1.5707963268
* /crane_x7/joint_limits/arm_joint4/has_acceleration_limits: False
* /crane_x7/joint_limits/arm_joint4/has_effort_limits: True
* /crane_x7/joint_limits/arm_joint4/has_jerk_limits: False
* /crane_x7/joint_limits/arm_joint4/has_position_limits: True
* /crane_x7/joint_limits/arm_joint4/has_velocity_limits: True
* /crane_x7/joint_limits/arm_joint4/max_effort: 4.0
* /crane_x7/joint_limits/arm_joint4/max_position: 2.726204
* /crane_x7/joint_limits/arm_joint4/max_velocity: 5.969211435
* /crane_x7/joint_limits/arm_joint4/min_position: 0.0
* /crane_x7/joint_limits/arm_joint5/has_acceleration_limits: False
* /crane_x7/joint_limits/arm_joint5/has_effort_limits: True
* /crane_x7/joint_limits/arm_joint5/has_jerk_limits: False
* /crane_x7/joint_limits/arm_joint5/has_position_limits: True
* /crane_x7/joint_limits/arm_joint5/has_velocity_limits: True
* /crane_x7/joint_limits/arm_joint5/max_effort: 4.0
* /crane_x7/joint_limits/arm_joint5/max_position: 1.5707963268
* /crane_x7/joint_limits/arm_joint5/max_velocity: 5.969211435
* /crane_x7/joint_limits/arm_joint5/min_position: -1.5707963268
* /crane_x7/joint_limits/arm_joint6/has_acceleration_limits: False
* /crane_x7/joint_limits/arm_joint6/has_effort_limits: True
* /crane_x7/joint_limits/arm_joint6/has_jerk_limits: False
* /crane_x7/joint_limits/arm_joint6/has_position_limits: True
* /crane_x7/joint_limits/arm_joint6/has_velocity_limits: True
* /crane_x7/joint_limits/arm_joint6/max_effort: 4.0
* /crane_x7/joint_limits/arm_joint6/max_position: 1.047196
* /crane_x7/joint_limits/arm_joint6/max_velocity: 5.969211435
* /crane_x7/joint_limits/arm_joint6/min_position: -2.094395
* /crane_x7/joint_limits/arm_joint7/has_acceleration_limits: False
* /crane_x7/joint_limits/arm_joint7/has_effort_limits: True
* /crane_x7/joint_limits/arm_joint7/has_jerk_limits: False
* /crane_x7/joint_limits/arm_joint7/has_position_limits: True
* /crane_x7/joint_limits/arm_joint7/has_velocity_limits: True
* /crane_x7/joint_limits/arm_joint7/max_effort: 4.0
* /crane_x7/joint_limits/arm_joint7/max_position: 2.96706
* /crane_x7/joint_limits/arm_joint7/max_velocity: 5.969211435
* /crane_x7/joint_limits/arm_joint7/min_position: -2.96706
* /crane_x7/joint_limits/hand_joint1/has_acceleration_limits: False
* /crane_x7/joint_limits/hand_joint1/has_effort_limits: True
* /crane_x7/joint_limits/hand_joint1/has_jerk_limits: False
* /crane_x7/joint_limits/hand_joint1/has_position_limits: True
* /crane_x7/joint_limits/hand_joint1/has_velocity_limits: True
* /crane_x7/joint_limits/hand_joint1/max_effort: 4.0
* /crane_x7/joint_limits/hand_joint1/max_position: 0.523598776
* /crane_x7/joint_limits/hand_joint1/max_velocity: 5.969211435
* /crane_x7/joint_limits/hand_joint1/min_position: 0.0
* /crane_x7/joint_state_controller/publish_rate: 250
* /crane_x7/joint_state_controller/type: joint_state_contr...
* /robot_description: <?xml version="1....
* /rosdistro: kinetic
* /rosversion: 1.12.14
NODES
/crane_x7/
controller_manager (controller_manager/spawner)
crane_x7_control (crane_x7_control/crane_x7_control)
robot_state_publisher (robot_state_publisher/robot_state_publisher)
auto-starting new master
process[master]: started with pid [13393]
ROS_MASTER_URI=http://192.168.10.128:11311
setting /run_id to 43a91a8e-cebb-11e8-a6f2-b46bfcb8910b
process[rosout-1]: started with pid [13406]
started core service [/rosout]
process[crane_x7/controller_manager-2]: started with pid [13424]
process[crane_x7/crane_x7_control-3]: started with pid [13425]
process[crane_x7/robot_state_publisher-4]: started with pid [13426]
[PortHandlerLinux::SetupPort] Error opening serial port!
[ INFO] [1539416433.446369738]: SKIP SELF CHECK...
terminate called after throwing an instance of 'std::runtime_error'
what(): Duration is out of dual 32-bit range
[INFO] [1539416433.581602]: Controller Spawner: Waiting for service controller_manager/load_controller
[INFO] [1539416433.582375]: Controller Spawner: Waiting for service controller_manager/switch_controller
[INFO] [1539416433.583056]: Controller Spawner: Waiting for service controller_manager/unload_controller
[INFO] [1539416433.583743]: Loading controller: joint_state_controller
Traceback (most recent call last):
File "/opt/ros/kinetic/lib/controller_manager/spawner", line 207, in <module>
if __name__ == '__main__': main()
File "/opt/ros/kinetic/lib/controller_manager/spawner", line 185, in main
resp = load_controller(name)
File "/opt/ros/kinetic/lib/python2.7/dist-packages/rospy/impl/tcpros_service.py", line 435, in __call__
return self.call(*args, **kwds)
File "/opt/ros/kinetic/lib/python2.7/dist-packages/rospy/impl/tcpros_service.py", line 505, in call
raise ServiceException("unable to connect to service: %s"%e)
rospy.service.ServiceException: unable to connect to service: [Errno 104] Connection reset by peer
[crane_x7/crane_x7_control-3] process has died [pid 13425, exit code -6, cmd /home/rt-user/catkin_ws/devel/lib/crane_x7_control/crane_x7_control __name:=crane_x7_control __log:=/home/rt-user/.ros/log/43a91a8e-cebb-11e8-a6f2-b46bfcb8910b/crane_x7-crane_x7_control-3.log].
log file: /home/rt-user/.ros/log/43a91a8e-cebb-11e8-a6f2-b46bfcb8910b/crane_x7-crane_x7_control-3*.log
[INFO] [1539416433.753274]: Shutting down spawner. Stopping and unloading controllers...
[INFO] [1539416433.753846]: Stopping all controllers...
[WARN] [1539416433.757798]: Controller Spawner error while taking down controllers: unable to connect to service: [Errno 111] Connection refused
[crane_x7/controller_manager-2] process has died [pid 13424, exit code 1, cmd /opt/ros/kinetic/lib/controller_manager/spawner joint_state_controller arm_controller gripper_controller __name:=controller_manager __log:=/home/rt-user/.ros/log/43a91a8e-cebb-11e8-a6f2-b46bfcb8910b/crane_x7-controller_manager-2.log].
log file: /home/rt-user/.ros/log/43a91a8e-cebb-11e8-a6f2-b46bfcb8910b/crane_x7-controller_manager-2*.log
ハンドを開いた状態では発生しないため、手先同士の衝突判定に問題があると考えられる。
CRANE-X7のGazebo上でメッシュをインポートしようと思います。Model EditorでSTLをインポートしましたが、[import]を押してからの後操作が分かりません。ご教授お願い致します。
https://github.com/rt-net/crane_x7_ros/blob/master/crane_x7_bringup/launch/demo.launch にて
includeの中で引数を渡しているが、defaultで新たに宣言されている。
正しくはvalue="$(arg ***)"
とすべき。
<include file="$(find crane_x7_moveit_config)/launch/demo.launch">
<arg name="db" default="$(arg db)" />
<arg name="db_path" default="$(arg db_path)" />
<arg name="debug" default="$(arg debug)" />
<arg name="fake_execution" default="$(arg fake_execution)" />
<arg name="use_gui" default="$(arg use_gui)" />
</include>
'moveit_simple_controller_manager'を利用しているが依存関係が定義されていない。
'crane_x7_moveit_config/package.xml'に定義を追加すべきである。
GazeboでCRANE-X7の位置を変更する場合、どのファイルを変更すればいいですか。
宜しくお願い致します。
crane_x7_controlの起動時に実機の姿勢を読み込んだ後、トルクONまでの間に姿勢を変更すると、読み込んだ姿勢へ急に移動するため危ない。
急に移動すると危険なので処理の順番を変更するなどした方が良い。
MoveIt!を使ったコーディングと動作確認は、現在の実装でも実機無しで実現可能だが、ロボット外部の物体をPick&Placeするなどアームを何かに作用させてシミュレーション学習するコンテンツが無い。
CRANE-X7をGazeboに対応させて、箱のモデルをPick&Placeするサンプルを追加したいと考えています。
pick and placeのサンプルを書く
lauchファイルで呼び出せるようにする
[ INFO] [1539407738.974455785]: Loading robot model 'crane_x7'...
[ INFO] [1539407738.974480297]: No root/virtual joint specified in SRDF. Assuming fixed joint
どのように動作させるかは検討する
サーボから取得してトピック出力している電流値や温度を使ったサンプルが欲しい
次のようなエラーが出てTravisCIでのテストに失敗しています。
https://travis-ci.com/rt-net/crane_x7_ros/builds/89108172
Extracting templates from packages: 100%
E: Unable to locate package ros-kinetic-moveit-planners-ompl
ERROR: the following rosdeps failed to install
apt: command [apt-get install -y ros-kinetic-moveit-planners-ompl] failed
現段階では.travis.yml
でのテスト対象のリモートリポジトリにros-shadow-fixed
のみを設定しています。
このリポジトリは次期リリースのパッケージが公開されており、discourseでアナウンスされる「prepareing for kinetic sync」などはここのリポジトリ(ros-shadow-fixed
)から通常の手順でセットアップするリポジトリ(ros
)へsyncするということらしいです。
http://wiki.ros.org/ShadowRepository
アップデートが頻繁にあるパッケージでは、ビルドエラーが出てros-shadow-fixed
にてパッケージが空になっているタイミングがあり、今回はそのエラーに遭遇しているようです。
参考:
jsk-enshu/robot-programming#233
以下のようにテスト対象を変更しようと思います。
Robot State TopicがないためRobotStateが初期姿勢のまま更新されません。
47b40eb で fake_execution
を true
と false
でそれぞれ試し、どちらもRobotStateが更新されないことを確認しました。
実機を動かす場合は、RobotStateが更新されてRviz上でロボットの状態を確認できた方が便利かもしれないと思いました。
rosdep install
したときに ros/rosdistro
に未定義のパッケージでエラーが出ます。
https://github.com/ros/rosdistro/tree/master/rosdep
dependencies
から削除してみてどう影響が出るか確認します。
ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
crane_x7_description: Cannot locate rosdep definition for [generate_distutils_setup]
crane_x7_contorl/include/crane_x7_control/joint_control.h の222行目:
ST_JOINT_PARAM set_joint_param( ST_JOINT_PARAM set_param){ param = set_param; }
となっていますが、返り値が必要なのに、return分がありません。
ST_JOINT_PARAM set_joint_param( ST_JOINT_PARAM set_param){ param = set_param; return param;}
とするか
void set_joint_param( ST_JOINT_PARAM set_param){ param = set_param; }
とする必要があると思います。
また、crane_x7_contorl/src/dxlport_control.cpp の131行目:
/* packetHandlerはdeleteしないほうが良さそう*/
の最後の部分で 「う*/」を 「う */」のように空白を挿入しないと、文字コードの関係でVC++ではエラーになります。これはLinuxでは問題ないのですが、日本語をソースコードに入れる場合には、コンパイラによってはエラーとなりますので、
/* packetHandlerはdeleteしないほうが良さそう */
と修正をお願いいたします。
https://github.com/ros/rosdistro にPRを出す。
対象ページ: https://wiki.ros.org/crane_x7
関連: #84
crane_x7_control.launch
で設定ファイルのcrane_x7_control.yaml
が2回含まれています。パラメータサーバでパラメータはネームスペースありとなしで重複します。
crane_x7_controlが備えている各機能について説明を追加する。
・サーボ状態(角度、温度、電流)のトピック配信について
・dynamic_reconfigureからの設定について
・通信ポートの変更方法について
・制御モードの切り替えについて
ハンド部の重量が変化するとPIDの設定値を適した値に設定したくなるが、適切なツールが備わっていない。Sciurus17にはPIDゲインプリセットツールが実装されているので、これを移植した方が便利である。
(sciurus17_ros/sciurus17_control/scripts/preset_reconfigure.py)
/crane_x7_ros/crane_x7_gazebo/worlds/table.worldファイル内のworld nameを"CRANE-X7 with Table"から"default"に変更しないと、gazeboが立ち上がらないです。
~/.gazebo/modelsにモデルがダウンロードされていることも確認しています。
開発環境のバージョンは下記となります。
OS: Ubuntu 18.04.4 LTS
ROS: Melodic Morenia 1.14.3
Gazebo: 9.0.0
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.