[ros-users] roslua: creating messages with subtypes

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: User discussions
Date:  
To: ROS users
New-Topics: Re: [ros-users] roslua: creating messages with subtypes
Subject: [ros-users] roslua: creating messages with subtypes
Dear List,

I just gave roslua a try and its working quite nicely. One smaller
problem I noticed is when printing some array types:

$ lua -lroslua
Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio
> twist = roslua.get_msgspec("geometry_msgs/Twist")
> t=twist:instantiate()
> t:print()

geometry_msgs/Twist
/home/mk/src/git/lua/roslua/src/roslua/msg_spec.lua:53: attempt to call method 'find' (a nil value)
stack traceback:
      /home/mk/src/git/lua/roslua/src/roslua/msg_spec.lua:53: in function 'is_array_type'
      /home/mk/src/git/lua/roslua/src/roslua/message.lua:259: in function 'print_value'
      /home/mk/src/git/lua/roslua/src/roslua/message.lua:285: in function 'print'
      stdin:1: in main chunk
      [C]: ?

>


Secondly I wondered if there is a more compact way to create messages
which contain submessages. For instance to create and fill a
"geometry_msgs/Twist" I did the following:

local Vector3=roslua.get_msgspec("geometry_msgs/Vector3")

local m = p.msgspec:instantiate() -- geometry_msgs/Twist message
local vec3lin = Vector3:instantiate()
local vec3ang = Vector3:instantiate()

vec3lin.values.x=x
vec3lin.values.y=y
vec3lin.values.z=z
vec3ang.values.x=xang
vec3ang.values.y=yang
vec3ang.values.z=zang

m.values.linear = vec3lin
m.values.angular = vec3ang


Before that I tried

m.values.linear.x = x
m.values.linear.y = y
...

but this didn't work.

Thanks in advance!

Markus