vanadiumlabs / arbotix_ros Goto Github PK
View Code? Open in Web Editor NEWArbotix ROS drivers repository
License: Other
Arbotix ROS drivers repository
License: Other
On plain ROS-Melodic (Ubuntu 18.04) when executing
rosrun arbotix_python arbotix_gui
We get the following error
[INFO] [1617740796.278069]: No URDF defined, proceeding with defaults
Traceback (most recent call last):
File "/home/andrea/catkin_ws/src/arbotix_ros/arbotix_python/bin/arbotix_gui", line 205, in
frame = controllerGUI(None, True)
File "/home/andrea/catkin_ws/src/arbotix_ros/arbotix_python/bin/arbotix_gui", line 131, in init
self.onPaint()
File "/home/andrea/catkin_ws/src/arbotix_ros/arbotix_python/bin/arbotix_gui", line 160, in onPaint
dc = wx.PaintDC(self.movebase)
File "/usr/lib/python2.7/dist-packages/wx-3.0-gtk3/wx/_gdi.py", line 5130, in init
gdi.PaintDC_swiginit(self,gdi.new_PaintDC(*args, **kwargs))
wx._core.PyAssertionError: C++ assertion "IsOk()" failed at ../src/common/dcgraph.cpp(437) in SetTextBackground(): wxGCDC(cg)::SetTextBackground - invalid DC
Hey Fergs,
I've been using arbotix_ros from source (hydro-devel branch) and I am using gripper_controller.py for a one-sided gripper. This file appears to be missing in the latest Hydro debs which I just downloaded. Did you mean to leave it out of the Debian packages?
I'm using MoveIt! and an ArbotiX 2 to drive a 6-dof Dynamixel arm (2 x RX-24, 4 x AX-12). Compared to the dynamixel_motor stack, the motion of the arm when executing a trajectory planned by MoveIt! is somewhat jerky--kind of a rat-a-tat-tat motion. Is there some way to make the motion smoother?
I use arbotix_ros with an OpenCM9.04 Dinamixel board, that provides analog readings between 0 and ~2000. Instead of converting to 0..255, could we just change the message? I suppose this will have no impact on current use with ArbotiX boards.
Hello, I am trying to get this repo working in an anaconda environment (my system is Ubuntu 20.04 btw) with ros-noetic but unfortunately the version of ros-noetic-arbotix available on the robostack channel has a default device port of 'dev/ttyUSB0', which my system does not have. I have tried modifying my site-packages files but apparently python is using hard-coded binaries so none of the changes are being used. Is there any way for me to build these packages (arbotix_msgs, arbotix_python, etc.) from source so that I can change this port value to something more suitable? Thanks a bunch!
I am trying out a new MX-28T servo and the arbotix_terminal app does not list its ID when issuing the 'ls' command, even when the servo is the only one on the bus. I am running the latest Debian version of the arbotix stack under ROS Hydro and Ubuntu 12.04.
looks like the read_rate parameter is not being accurately followed.
for me, specifying a read_rate of 21.15 gives me an actual rate of 15 as measured by rostopic hz /joint_states
Using the Groovy Debian arbotix packages, and running arbotix_python with the sim parameter set to true, the odom->base_link transform does not appear to be published. It works fine in the SVN version from http://vanadium-ros-pkg.googlecode.com/svn/trunk/arbotix.
When running the arbotix_python driver in succession with different robot configurations, the set of parameters under /arbotix can persist in between invocations and cause unwanted controllers to be launched or non-existent joints to show up in the controller GUI. Does it make sense to delete the /arbotix parameter tree at the beginning of the arbotix_python driver execution?
Is this waiting on anything for a kinetic release? I've been using it stably in my kinetic workspace for a while.
I am using the Arbotix trajectory action controller in fake mode with a 6-dof arm to test the compute_cartesian_path() Python function in MoveIt. I set two waypoints in addition to the start pose and end pose (which are the same). The Arbotix trajectory controller does a nice job of following the straight line paths except at the beginning and end of the trajectory where it causes the gripper to do a little "zig-zag". If I run MoveIt in pure demo mode without the ArbotiX controller, the trajectories do not display this zig-zag.
Here is a video demonstrating the phenomenon.
https://www.youtube.com/watch?v=ns6jrEreruU
My test script is included below.
#!/usr/bin/env python
import rospy, sys
import moveit_commander
from moveit_commander import MoveGroupCommander
from geometry_msgs.msg import Pose
from copy import deepcopy
class MoveItDemo:
def __init__(self):
# Initialize the move_group API
moveit_commander.roscpp_initialize(sys.argv)
# Initialize the ROS node
rospy.init_node('moveit_demo', anonymous=True)
cartesian = rospy.get_param('~cartesian', True)
# Connect to the right_arm move group
right_arm = MoveGroupCommander('right_arm')
# Allow replanning to increase the odds of a solution
right_arm.allow_replanning(True)
# Set the right arm reference frame
right_arm.set_pose_reference_frame('base_footprint')
# Allow some leeway in position(meters) and orientation (radians)
right_arm.set_goal_position_tolerance(0.01)
right_arm.set_goal_orientation_tolerance(0.1)
# Get the name of the end-effector link
end_effector_link = right_arm.get_end_effector_link()
# Start in the "resting" configuration stored in the SRDF file
right_arm.set_named_target('resting')
# Plan and execute a trajectory to the goal configuration
right_arm.go()
rospy.sleep(2)
# Remember this pose so we can add it as a waypoint
resting_pose = right_arm.get_current_pose(end_effector_link).pose
# Set the end pose to be the same as the resting pose
end_pose = deepcopy(resting_pose)
# Initialize the waypoints list
waypoints = []
# Set the first waypoint to be the starting pose
wpose = deepcopy(resting_pose)
if cartesian:
# Append the pose to the waypoints list
waypoints.append(deepcopy(wpose))
# Set the next waypoint forward and up
wpose.position.x += 0.2
wpose.position.z += 0.2
if cartesian:
# Append the pose to the waypoints list
waypoints.append(deepcopy(wpose))
else:
right_arm.set_pose_target(wpose)
right_arm.go()
rospy.sleep(2)
# Set the next waypoint to the right
wpose.position.x -= 0.195701
wpose.position.y -= 0.18997
wpose.position.z += 0.02914
if cartesian:
# Append the pose to the waypoints list
waypoints.append(deepcopy(wpose))
else:
right_arm.set_pose_target(wpose)
right_arm.go()
rospy.sleep(2)
# Set the final pose to be the resting pose
wpose = deepcopy(end_pose)
if cartesian:
# Append the pose to the waypoints list
waypoints.append(deepcopy(wpose))
else:
right_arm.set_pose_target(wpose)
right_arm.go()
rospy.sleep(2)
fraction = 0.0
maxtries = 500
attempts = 0
right_arm.set_start_state_to_current_state()
# Plan the Carteisan path connecting the waypoints
while fraction < 1.0 and attempts < maxtries:
(plan, fraction) = right_arm.compute_cartesian_path (
waypoints, # waypoints to follow
0.01, # eef_step
0.0) # jump_threshold
attempts += 1
if attempts % 100 == 0:
rospy.loginfo("Still trying after " + str(attempts) + " attempts...")
# Plan and execute a trajectory to the goal configuration
if fraction == 1.0:
rospy.loginfo("Path computed successfully. Moving the arm.")
right_arm.execute(plan)
else:
rospy.loginfo("Path planning failed with only " + str(fraction) + " success after " + str(maxtries) + " attempts.")
# Shut down MoveIt cleanly
moveit_commander.roscpp_shutdown()
# Exit MoveIt
moveit_commander.os._exit(0)
if __name__ == "__main__":
try:
MoveItDemo()
except rospy.ROSInterruptException:
pass
So user don't need to call the service on any sevo. It's just a suggestion; maybe is too dynamixel-specific stuff to put here. For example, @pirobot has implemented the same in his own stack.
I run arbotix_terminal
and I detect my five servos
Then, I run roslaunch turtlebot_arm_bringup arm.launch
until I see [INFO] [1506951666.556013]: ArbotiX connected
. Then, I run
abdulrahman@abdulrahman-ThinkPad-X230-Tablet:~$ arbotix_gui
/home/abdulrahman/catkin_ws/src/arbotix_ros/arbotix_python/bin/arbotix_gui:203: wxPyDeprecationWarning: Using deprecated class PySimpleApp.
app = wx.PySimpleApp()
I get the window with five joints.
But I can NOT move the actual arm by using arbotix_gui
any help please ????
Hello, when I execute "roslaunch mrobot_description arbotix_mrobot_with_kinect.launch",The error that occurred is
error loading tag:
'ascii' codec can't decode byte 0xef in position 312: ordinal not in range(128)
XML is
The traceback for the exception was written to the log file
What should I do?
I'm using arbotix_ros with a USB2Dynamixel controller (I fried my ArbotiX) and a 6-dof Dynamixel arm with two MX-28T's in the shoulder joints and AX-12s at the other joints. When I use MoveIt to plan and execute a trajectory, the motion of the arm is correct except the servos do not stop moving at the same time. For example, if I move the arm to the "resting" position with the arm hanging straight down, the shoulder servos can finish their motion before the elbow and wrist servos. Is this expected behavior? Or should all servos reach their target positions at the same time?
My setup: ROS Hydro Debian packages for arbotix and Ubuntu 12.04.
It would be nice to have a new boolean "enable" service that could be used to enable or disable a servo controller. The idea is that if the servo is disabled ("enable false") then subsequent position requests would be ignored. This is different from the existing relax service since position commands sent after a servo is relaxed automatically re-enable torque and move the servo.
Motivation: I am trying to build in some better servo overheating protection when using MoveIt for extended periods of time. I have a node that will monitor servo temperatures (e.g. using /diagnostics) and will disable a servo if a temperature threshold is exceeded. It will then re-enable the servo when the temperature falls below a second threshold. I can't use the existing relax service for this purpose for the reasons above. Using mux gets messy when dealing with so many individual controllers and I don't think mux can be made to work with MoveIt anyway.
Any idea why:
sudo apt-get install ros-indigo-arbotix-*
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package ros-indigo-arbotix-*
E: Couldn't find any package by glob 'ros-indigo-arbotix-*'
E: Couldn't find any package by regex 'ros-indigo-arbotix-*'
pitosalas@ubuntu:~$
( modified by adding -* because I had misread instructions. But still doesn't work..)
Hello!
Is it possible to install arbotix_ros
package in Raspberry-Pi 4 from source?
What is the proper pipeline that I should follow in order to install the package from source (even if it is not an RPI-4)?
Thank you in advance!
PS. I have tried to install the package using the sudo apt-get install ros-noetic-arbotix
on RPI-4 but it didn't work, although it worked just fine on my laptop.
When I execute a trajectory in MoveIt RViz and press the stop button the motion of the robot arm doesn't stop. The console sais that the motion is stoped but in reality the motion is done until the destination is reached. I tried adding a
stop_trajectory_duration: 0.5
in my .yaml file but without success. Here is the output of the console:
How can I stop a executed trajectory in the follow_controller?
Is there any plan to migrate the entire package to ROS2?
I have some minimal work https://github.com/light-tech/arbotix_ros, just enough to test the PhantomX Pincher arm but I can't work on the rest without the hardware to test.
This is already started, but needs to be finished.
This has been marked as deprecated for over a year, should be removed in 0.9.0
Hi
I am using ros indigo and ubuntu 14.04. I have Phantomx Pincher arm connected to the computer via FTDI USB cable.
I clone arbotix
and I did catkin_make
properly.
BUT I can not detect my servos (dynamixel ax-12a) thru arbotix, I am getting the following output,
anyone can help me please ??
I even tried arbotix_gui
I got the window but the servos don't move.
imr@IMR-PC:~$ sudo chmod 777 /dev/ttyUSB0
[sudo] password for imr:
imr@IMR-PC:~$ arbotix_terminal
ArbotiX Terminal --- Version 0.1
Copyright 2011 Vanadium Labs LLC
>> ls
.... .... .... .... .... .... .... .... ....
.... .... .... .... .... .... .... .... ....
>> ls
.... .... .... .... .... .... .... .... ....
.... .... .... .... .... .... .... .... ....
>> ls
.... .... .... .... .... .... .... .... ....
.... .... .... .... .... .... .... .... ....
>> ls
.... .... .... .... .... .... .... .... ....
.... .... .... .... .... .... .... .... ....
>>
Hi @mikeferguson, it seems to me that you have no time at all to maintain this repo; would you like some help?
I have notice that people (me included) are developing their own forks, wasting time on duplicated effort. I'll have some time in the following weeks, so I can at least help merging my changes and those from @croesmann.
Particularly, the gripper controller need a proper action server that waits for reached position. At least @croesmann and me did that in our forks.
It appears that the joint_state message published by arbotix_python when in 'sim' mode is always 0 for each joint. I was wondering what changes I would have to make to the code to publish a fake speed based on the previous and current fake positions? I ask because I think having all-zero speeds may be affecting trajectory execution when working with MoveIt and a fake arm.
Here's a video demonstrating the issue:
https://youtu.be/Ed6hL4YUrWk
max_speed
is set to 45
in a YAML file, and the motor typically follows this, but it ignores the limit if the turret is unplugged, moved, and plugged back in. The video shows it moving normally once, and then moving fast while ignoring max_speed
.
I used this command to move the turret:
rostopic pub --once /projector/projector_servo_pan_joint/command std_msgs/Float64 "data: -1.57"
As the command suggests, the turret typically has a projector attached to it, which is why it moves once it is unplugged, and also the reason why it moving too fast could be problematic.
g@g:~/catkin_ws$ roslaunch mrobot_description arbotix_mrobot_with_kinect.launch ... logging to /home/g/.ros/log/0767860a-efe0-11e8-a5fc-2cfda1bc2526/roslaunch-g-10554.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://g:40353/
PARAMETERS
NODES
/
arbotix (arbotix_python/arbotix_driver)
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 [10567]
ROS_MASTER_URI=http://localhost:11311
[rviz-5] killing on exit
[joint_state_publisher-3] killing on exit
[robot_state_publisher-4] killing on exit
[rosout-1] killing on exit
[master] killing on exit
shutting down processing monitor...
... shutting down processing monitor complete
done
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.