pilzde / pilz_teach Goto Github PK
View Code? Open in Web Editor NEWJogging a manipulator and defining poses as you are used to in robotics controllers, but using native ROS functionality
License: GNU General Public License v3.0
Jogging a manipulator and defining poses as you are used to in robotics controllers, but using native ROS functionality
License: GNU General Public License v3.0
Write tutorial / Readme for user installation.
While using keyboard input with the 6D teleoperation you can move the robot on 2D planes.
Those planes can be toggled.
I would like to have the active plane visualized in RVIZ, to see which effect my key input might have.
Switch implemantation to pygame
Write a rostest to automatically start-up the launch file to make sure, all the dependencies and the launch parameters exist.
See #3, which only added the travis configuration
Startup moveit_planning_execution.launch
and send a MotionPlanRequest or similar to move the robot via ros bridge.
Implement changes for the second run
based on key_teleop:
Travis should be configured to automatically run all tests stored in this repository
The functions to store points into a python file are added to the UI. For example F2 to create a new file, defining its filename, F3 to store the current robot Pose (entering its name) and F4 key to append a joint pose.
Only implements creation of points; remove, update, delete will be implemented later.
Wouldn't adding two parameters for file name and point name improve the usability a lot? Or will those be added in another PR along the possibility to add multiple points to one file?
Originally posted by @DamKoVosh in #49 (comment)
Use travis to automatically start-up the launch file once to make sure, all the dependencies and the launch paramters exist.
start key_teleop.launch
The terminal displayes angular and linear velocity in rad/s and m/s, this may not necessarily be correct since the binding does not use max speed. The value that is displayed is more % but not of the max value, but the one in the binding config.
After downloading and building, along with moveit_msgs and moveit_jog_arm packages, I run:
roslaunch prbt_jog_arm_support prbt_jog_arm_sim.launch
Rviz should open and console should show no errors.
The following error is shown:
[ INFO] [1583315115.366003023]: Stereo is NOT SUPPORTED
[ INFO] [1583315115.366082616]: OpenGl version: 3 (GLSL 1.3).
[controller_loader-7] process has finished cleanly
log file: /home/darioroa/.ros/log/d88f4f66-5dfc-11ea-acc4-dca904841882/controller_loader-7*.log
[fake_joint_driver-5] process has died [pid 30386, exit code -11, cmd /opt/ros/melodic/lib/fake_joint_driver/fake_joint_driver_node __name:=fake_joint_driver __log:=/home/darioroa/.ros/log/d88f4f66-5dfc-11ea-acc4-dca904841882/fake_joint_driver-5.log].
log file: /home/darioroa/.ros/log/d88f4f66-5dfc-11ea-acc4-dca904841882/fake_joint_driver-5*.log
[ WARN] [1583315119.967002532]: Waiting for manipulator_joint_trajectory_controller//follow_joint_trajectory to come up
[ WARN] [1583315125.967417289]: Waiting for manipulator_joint_trajectory_controller//follow_joint_trajectory to come up
[ERROR] [1583315131.967821841]: Action client not connected: manipulator_joint_trajectory_controller//follow_joint_trajectory
demo-implementation
evaluate and document the test results
test and discuss implementation of state-of-the-art.
The teleoperation settings are currently hard coded. To change the default or max speed it would require to fork our repo, we should load those settings from the parameter server. Either with an config file or by making them single arguments.
additional 6 keys for rotation, e.g.
q | w | e x+ | y+ | z+
a | s | d x- | y- | z-
To run a script or use the python api in any other way to move the robot to a defined position toggling the controller is necessary.
pilz_teach: d0dfb
pilz_robots: b5d88
moveit: efa7f
mkdir catkin_ws
cd catkin_ws
mkdir src
cd src
catkin_init_workspace
git clone https://github.com/PilzDE/pilz_teach.git
git clone https://github.com/PilzDE/pilz_robots.git
git clone https://github.com/ros-planning/moveit.git
OR: git clone https://github.com/PilzDE/moveit.git
cd ..
rosdep install --from-paths src --ignore-src -r -y
catkin_make
Should compile without error
catkin_ws/src/moveit/moveit_core/robot_state/src/conversions.cpp: In function ‘void moveit::core::{anonymous}::attachedBodyToMsg(const moveit::core::AttachedBody&, moveit_msgs::AttachedCollisionObject&)’:
/home/christian/catkin_ws/src/moveit/moveit_core/robot_state/src/conversions.cpp:219:14: error: ‘moveit_msgs::AttachedCollisionObject<std::allocator >::object_type {aka struct moveit_msgs::CollisionObject<std::allocator >}’ has no member named ‘subframe_names’
aco.object.subframe_names.clear();
catkin_ws2/src/pilz_robots/prbt_hardware_support/src/libmodbus_client.cpp: In member function ‘virtual void prbt_hardware_support::LibModbusClient::setResponseTimeoutInMs(long unsigned int)’:
/home/sascha/catkin_ws2/src/pilz_robots/prbt_hardware_support/src/libmodbus_client.cpp:56:51: error: invalid conversion from ‘timeval*’ to ‘uint32_t {aka unsigned int}’ [-fpermissive]
modbus_set_response_timeout(modbusconnection, &response_timeout);
^~~~~
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.4 LTS
Release: 18.04
Codename: bionic
Simulation succeeded. Real jogging failed.
How can the issue/bug be reproduced?
Real robot can be jogged by keys
Robot initialized, break released. No movement. Got some EMCY errors and a 3D sensor error.
Starting planning scene monitors...
...
[ERROR] [1583827607.334247236]: Failed to find 3D sensor plugin parameters for octomap generation
...
[ INFO] [1583827608.352193404]: waitForService: Service [/prbt/manipulator_joint_trajectory_controller/hold] has not been advertised, waiting...
[ERROR] [1583827608.372707285]: EMCY received: 83#0000000000000000
[ERROR] [1583827608.376348170]: EMCY received: 84#0000000000000000
[ERROR] [1583827608.379154348]: EMCY received: 85#0000000000000000
[ERROR] [1583827608.382530051]: EMCY received: 86#0000000000000000
[ERROR] [1583827608.385933620]: EMCY received: 87#0000000000000000
[ERROR] [1583827608.390027850]: EMCY received: 88#0000000000000000
[ INFO] [1583827608.390509914]: Initializing successful
[ INFO] [1583827608.435816434]: waitForService: Service [/prbt/safe_torque_off] has not been advertised, waiting...
[ INFO] [1583827608.564347025]: waitForService: Service [/prbt/manipulator_joint_trajectory_controller/hold] has not been advertised, waiting...
[ INFO] [1583827608.646892018]: waitForService: Service [/prbt/safe_torque_off] has not been advertised, waiting...
[ INFO] [1583827608.690148065]: waitForService: Service [/prbt/manipulator_joint_trajectory_controller/hold] is now available.
[ INFO] [1583827608.709660182]: waitForService: Service [/prbt/safe_torque_off] is now available.
[ INFO] [1583827608.922283993]: Recovering...
[ INFO] [1583827608.922387241]: Recovering successful
[ INFO] [1583827608.933523867]: Added FollowJointTrajectory controller for prbt/manipulator_joint_trajectory_controller/
[ INFO] [1583827608.933665933]: Returned 1 controllers in list
[ INFO] [1583827608.953969227]: Trajectory execution is managing controllers
Loading 'move_group/ApplyPlanningSceneService'...
Loading 'move_group/ClearOctomapService'...
Loading 'move_group/MoveGroupCartesianPathService'...
Loading 'move_group/MoveGroupExecuteTrajectoryAction'...
Loading 'move_group/MoveGroupGetPlanningSceneService'...
Loading 'move_group/MoveGroupKinematicsService'...
Loading 'move_group/MoveGroupMoveAction'...
Loading 'move_group/MoveGroupPickPlaceAction'...
Loading 'move_group/MoveGroupPlanService'...
Loading 'move_group/MoveGroupQueryPlannersService'...
Loading 'move_group/MoveGroupStateValidationService'...
Loading 'pilz_trajectory_generation/MoveGroupSequenceAction'...
[ INFO] [1583827609.085680223]: initialize move group sequence action
[ INFO] [1583827609.099722389]: Reading limits from namespace /robot_description_planning
Loading 'pilz_trajectory_generation/MoveGroupSequenceService'...
[robot_init-8] process has finished cleanly
log file: /home/pilz/.ros/log/14fedb8a-62a6-11ea-ab59-94659c149f51/robot_init-8*.log
[ INFO] [1583827609.105842175]: Reading limits from namespace /robot_description_planning
[ INFO] [1583827609.112137466]:
...
[ INFO] [1583827609.112282316]: MoveGroup context using planning plugin pilz::CommandPlanner
[ INFO] [1583827609.112330952]: MoveGroup context initialization complete
You can start planning now!
[ INFO] [1583827609.261482484]: Waiting for low-pass filters to stabilize.
[ INFO] [1583827609.261644833]: jog_calcs_thread: Received first joint msg.
[ INFO] [1583827609.265982934]: Call "get firmware" service for "prbt_joint_1"
[ INFO] [1583827609.281946513]: Call "get firmware" service for "prbt_joint_2"
[ INFO] [1583827609.293940077]: Call "get firmware" service for "prbt_joint_3"
[ INFO] [1583827609.309381795]: Call "get firmware" service for "prbt_joint_4"
[ INFO] [1583827609.323019276]: Call "get firmware" service for "prbt_joint_5"
[ INFO] [1583827609.337825051]: Call "get firmware" service for "prbt_joint_6"
[ WARN] [1583827609.342169092]: Stale command. Try a larger 'incoming_command_timeout' parameter?
[ INFO] [1583827609.351428375]: Firmware version [prbt_joint_1]: 100 Build:11158 Date:2018-06-07 16:49:555
[ INFO] [1583827609.351513286]: Firmware version [prbt_joint_2]: 100 Build:11158 Date:2018-06-07 16:49:555
[ INFO] [1583827609.351542115]: Firmware version [prbt_joint_3]: 100 Build:11158 Date:2018-06-07 16:49:55U
[ INFO] [1583827609.351564671]: Firmware version [prbt_joint_4]: 100 Build:11158 Date:2018-06-07 16:49:55A
[ INFO] [1583827609.351588605]: Firmware version [prbt_joint_5]: 100 Build:11158 Date:2018-06-07 16:49:55%
[ INFO] [1583827609.351609844]: Firmware version [prbt_joint_6]: 100 Build:11158 Date:2018-06-07 16:49:555
[prbt/system_info_node-13] process has finished cleanly
log file: /home/pilz/.ros/log/14fedb8a-62a6-11ea-ab59-94659c149f51/prbt-system_info_node-13*.log
[ WARN] [1583827619.342220384]: Stale command. Try a larger 'incoming_command_timeout' parameter?
[ WARN] [1583827629.342254603]: Stale command. Try a larger 'incoming_command_timeout' parameter?
[ WARN] [1583827639.350273551]: Stale command. Try a larger 'incoming_command_timeout' parameter?
[ WARN] [1583827649.358171387]: Stale command. Try a larger 'incoming_command_timeout' parameter?
[ WARN] [1583827659.358199212]: Stale command. Try a larger 'incoming_command_timeout' parameter?
[ WARN] [1583827669.358248350]: Stale command. Try a larger 'incoming_command_timeout' parameter?
[ WARN] [1583827679.358224114]: Stale command. Try a larger 'incoming_command_timeout' parameter?
[ WARN] [1583827689.366234902]: Stale command. Try a larger 'incoming_command_timeout' parameter?
When another plane/axis is toggled the standard jogging by x,y,z or rx, ry, rz is also changed.
This can resolve in unexprected behaviour.
There is no easy fix for this, since the jogging request is only a twist msg. The driver is not able to know if this is supposed to be projected to a plane or not.
Solutions:
Originally posted by @DamKoVosh in #46
We need faster joint movements; adjust the config.
May need fixing ros-planning/moveit#1775 or a workaround.
We need to consider adding an argument to switch the keyboard layout / bindings on the keyboard
when defining a binding other than on the numpad it may only be usable in some countries depending on the used keyboard layout. This is especially true for german and english layouts (z-y and äöü...)
for easy storage
Use the Pylint project and its --py3k flag in CI to lint the code to receive warnings when it begins to deviate from Python 3 compatibility.
document available features and ideas
based on #1
The virtual robot moves "somehow" via keyboard presses. This should implement / fork an initial keyboard control and show, what needs to be done in future PBIs.
Evaluate, if possible or already available
Simulation succeeds. Real jogging fails.
We should write a launch file to bringup real robot with velocity controller.
Only active in T1 operation mode
Note to update Readme / Documentation
with test person
the _nosetests
macro reads the environment variable CATKIN_TEST_COVERAGE
, so that has to be set, see catkin/cmake
export CATKIN_TEST_COVERAGE=1
Then a .coverage
is created inside the build directory. We'd have to combine them with the rostest output and different nosetest runs (that are using unittest without nose by the way)
In fact I think we probably need to fix the catkin cmake macros for proper python coverage...
Originally posted by @jschleicher in #34 (comment)
simple test case:
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.