From 3dcc1eaf6c1c27f8e8d05e212d08340f70fac3f3 Mon Sep 17 00:00:00 2001 From: Federica Di Lauro Date: Tue, 11 Feb 2020 12:04:41 +0100 Subject: [PATCH] switch to protobuf v2 --- .../scripts/cmd_vel_transmitter.py | 5 +- .../c_protobuf_includes/status_message.pb.h | 9 +- .../otto_communication.proto | 42 +++ .../otto_communication_pb2.py | 304 ++++++++++++++++++ .../messages_definitions/status_message.proto | 15 +- .../status_message_pb2.py | 20 +- .../config_command_pb2.cpython-36.pyc | Bin 0 -> 3151 bytes .../otto_communication_pb2.cpython-36.pyc | Bin 0 -> 4996 bytes .../status_message_pb2.cpython-36.pyc | Bin 0 -> 2800 bytes .../velocity_command_pb2.cpython-36.pyc | Bin 0 -> 1854 bytes .../py_serial_examples/config_command_pb2.py | 153 +++++++++ .../otto_communication_pb2.py | 304 ++++++++++++++++++ utils/py_serial_examples/proto_test.py | 28 ++ .../py_serial_examples/status_message_pb2.py | 135 ++++++++ utils/py_serial_examples/transmit.py | 15 +- .../velocity_command_pb2.py | 76 +++++ 16 files changed, 1083 insertions(+), 23 deletions(-) create mode 100644 utils/protobuf_messages/messages_definitions/otto_communication.proto create mode 100644 utils/protobuf_messages/messages_definitions/otto_communication_pb2.py create mode 100644 utils/py_serial_examples/__pycache__/config_command_pb2.cpython-36.pyc create mode 100644 utils/py_serial_examples/__pycache__/otto_communication_pb2.cpython-36.pyc create mode 100644 utils/py_serial_examples/__pycache__/status_message_pb2.cpython-36.pyc create mode 100644 utils/py_serial_examples/__pycache__/velocity_command_pb2.cpython-36.pyc create mode 100644 utils/py_serial_examples/config_command_pb2.py create mode 100644 utils/py_serial_examples/otto_communication_pb2.py create mode 100644 utils/py_serial_examples/proto_test.py create mode 100644 utils/py_serial_examples/status_message_pb2.py create mode 100644 utils/py_serial_examples/velocity_command_pb2.py diff --git a/utils/catkin_ws/src/joypad_bridge/scripts/cmd_vel_transmitter.py b/utils/catkin_ws/src/joypad_bridge/scripts/cmd_vel_transmitter.py index c76b398..fe9a4a2 100755 --- a/utils/catkin_ws/src/joypad_bridge/scripts/cmd_vel_transmitter.py +++ b/utils/catkin_ws/src/joypad_bridge/scripts/cmd_vel_transmitter.py @@ -6,7 +6,7 @@ from serial import SerialException ser = serial.Serial( baudrate=115200, - parity=serial.PARITY_ODD, + parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS, rtscts=False) @@ -17,7 +17,8 @@ def callback(data): rospy.loginfo('I heard %f %f', linear, angular) msg_output = struct.pack('tdcP6u$=Jzn|U2>z#3| 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 literal 0 HcmV?d00001 diff --git a/utils/py_serial_examples/__pycache__/status_message_pb2.cpython-36.pyc b/utils/py_serial_examples/__pycache__/status_message_pb2.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7f1875b5ed179a14078883b7898b7f5d6e37614a GIT binary patch literal 2800 zcmb7F&2HO95ZfZX+{c_6)BKZ zU>iLYb+3McK0#k2=RUz+d(tcPR4nylNik4VgqE|j!{PVMemi`g$(a40U;UKG6Y@8i z_^lE`z9EDJFEv7d02PE0By9?$NI?5Q{1U_<{yXVDf`qy=4G8EW)`_zORZk>EtfRAJ zWE&#ZF<2_HQzF(e*<56sBGyT>G$lCK&Ri3g#Y8&?bC8A%YLLCAkh_U93$yKcw5};7 zm}uw0f_b25VWPbNd5F*fg@v0$CbkTFJ<|4;%2{CdCSvZ7*VBh;a$ZP*xa$Vxqka58)9IScGLL!7^;(3Xp4sP+gnR z_{B{wihK-PQQUt=R^Urm1`SHEs&cA5x+C8c_zE;wg|A`z?x-fb&Ng0Y`csP zR4ss>lFIYG5>~YzBZM^QP-N<^{;!qD;)IZ2$SJAN>Yt=SCB5)fa5Vh$?aq6zgF8)d zguV0D_uAM9gB>pny`5g@h+wCC$piEqTX4LvJ6(anP7vB*FW?;v0=tF0Ti@O8UP|MI zuse0IUnbN`6%b#a#iWfenGvQo0eY=SXjQ2TJ9OM<6)JUf8y;YV`U?3iR$nEKa*p3n zq0$5l8otvFJ- zT+yPHf|&*sq0Kvv5KgcX+t9Z3{HCc7fUU$gw5{y!;`Y>whO_dgU#Y1NR`PRZ^1S+8 z_2gaEBKf?TeYbafc3eH;uTQFn$43^;r_4m{U~m6NOH;A6^J?|DdSu1&1=ISLzp5SY zA06<+z4PzS_%kbhhj-UX90 zIadh0TbDzeSB1Nnuo3o3!p{*xWWsR)FQo4FI(77A((9@{4P-pL>>`^X*H^Na19p8S zH#VZjKBLxG`ufbh+gI{p)8zU}%KbkGA?23X+q1)>W*pyYmv=eZ=2+<83 z&t$%BSBW;`qUtI{-s*>yQ}7_L^QqbCoF93GHaJq?acKdZLRP(zUrQn4lqb6?eD zLk$rRz3HHUK$>F)0ZY3Wga{GafSF_FL9~%9GolW5U7$Z7DQf&U_ieX@0nW1oW8CdzdbvtNt5%A2R(tDS02h(a2d$-NAy*Rx#KoHrtvz< zwLGsShP|rZYx*e#V2 z5x76@x&BiXwp7EG6NKnbFS6``+w0s0vjsK(K^=?<=ORBn+dDfyeRFVnx_5LioZaS} z$ze`Bnmbe*cI%Ldrts{LWv5fJ>|kSg{W3bN{^RkMFHQ=39KhC&&_&-45#Fk=K*JNm zzJ8{9PI5Srac~-;zo|-)8TmZ*$iq7^QoM(GvyoojiF^|>K7m8RCzRN#L`r! Lrk14|HDmt*_saKV literal 0 HcmV?d00001 diff --git a/utils/py_serial_examples/__pycache__/velocity_command_pb2.cpython-36.pyc b/utils/py_serial_examples/__pycache__/velocity_command_pb2.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c3fd0d8d8b3c684e6db4da15155b8a42a4f24b0e GIT binary patch literal 1854 zcmaJ>NpBlB6edU8Xe?>Q`w}-vgBIvqEVMx{g&VZ6<03`9z%~M84q>TzPs%8q1?0%E zjGpRV{X_bfc-R%XZrt|Ni~^&zpq&MHYTLgpeNyA?iCy z2oRux1O&;D0@)>CeI)WJRG|6?$-aP^*#ip*)I}w(1~qCd8ln={gGNEyq7vIdv!I)z z5<9_4K|7)nw}KWWxH4?tlc0mOp$jX}f;L*vxu@VhR09t?!&UU|DJ57Nu7L+0P&8j{ zxDKnZ1_ah&12$nDwr~T;J%w^@75nysTWIdUZlU+TngeS<%mNBq&@QMwcmn$mUa*Oq z=nc2PJ0#c~Zi9!7;ZC38E^fkS@btmDuLOJ889u>1gB9o%@t;jhP|qe6LP$ub0XDn& zj!b~7gpl9J74hlWpTwt{-b$lf{QdoN_d^G*FM#COu`h}c!GPzy$CXj&JX#tb?zWaaJIG|3rOq&I!Xuj*>TW7Lg|hadR>bzO~5!>5pf}dULU& z6zh%4g5CcK6O=qhxG?=2rsA|53fHD`8`FcXLKNn5-N15Zu%@zwnN!S4GjFtgScdtP znM&$cLWoVD($;KM>{^vt#cEm3oVKWCRcW2t)TVW6sKt|QS(ec#?Mlk7I97*R)T#Uf DvM?uv literal 0 HcmV?d00001 diff --git a/utils/py_serial_examples/config_command_pb2.py b/utils/py_serial_examples/config_command_pb2.py new file mode 100644 index 0000000..58cca1c --- /dev/null +++ b/utils/py_serial_examples/config_command_pb2.py @@ -0,0 +1,153 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: config_command.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='config_command.proto', + package='', + syntax='proto3', + serialized_pb=_b('\n\x14\x63onfig_command.proto\"\xa3\x02\n\rConfigCommand\x12\x0f\n\x07left_kp\x18\x01 \x01(\x02\x12\x0f\n\x07left_ki\x18\x02 \x01(\x02\x12\x0f\n\x07left_kd\x18\x03 \x01(\x02\x12\x10\n\x08right_kp\x18\x04 \x01(\x02\x12\x10\n\x08right_ki\x18\x05 \x01(\x02\x12\x10\n\x08right_kd\x18\x06 \x01(\x02\x12\x10\n\x08\x63ross_kp\x18\x07 \x01(\x02\x12\x10\n\x08\x63ross_ki\x18\x08 \x01(\x02\x12\x10\n\x08\x63ross_kd\x18\t \x01(\x02\x12\x10\n\x08\x62\x61seline\x18\n \x01(\x02\x12\x1c\n\x14ticks_per_revolution\x18\x0b \x01(\x07\x12!\n\x19right_wheel_circumference\x18\x0c \x01(\x02\x12 \n\x18left_wheel_circumference\x18\r \x01(\x02\x62\x06proto3') +) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + + + + +_CONFIGCOMMAND = _descriptor.Descriptor( + name='ConfigCommand', + full_name='ConfigCommand', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='left_kp', full_name='ConfigCommand.left_kp', index=0, + number=1, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='left_ki', full_name='ConfigCommand.left_ki', index=1, + number=2, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='left_kd', full_name='ConfigCommand.left_kd', index=2, + number=3, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='right_kp', full_name='ConfigCommand.right_kp', index=3, + number=4, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='right_ki', full_name='ConfigCommand.right_ki', index=4, + number=5, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='right_kd', full_name='ConfigCommand.right_kd', index=5, + number=6, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='cross_kp', full_name='ConfigCommand.cross_kp', index=6, + number=7, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='cross_ki', full_name='ConfigCommand.cross_ki', index=7, + number=8, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='cross_kd', full_name='ConfigCommand.cross_kd', index=8, + number=9, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='baseline', full_name='ConfigCommand.baseline', index=9, + number=10, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='ticks_per_revolution', full_name='ConfigCommand.ticks_per_revolution', index=10, + number=11, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='right_wheel_circumference', full_name='ConfigCommand.right_wheel_circumference', index=11, + number=12, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='left_wheel_circumference', full_name='ConfigCommand.left_wheel_circumference', index=12, + number=13, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=25, + serialized_end=316, +) + +DESCRIPTOR.message_types_by_name['ConfigCommand'] = _CONFIGCOMMAND + +ConfigCommand = _reflection.GeneratedProtocolMessageType('ConfigCommand', (_message.Message,), dict( + DESCRIPTOR = _CONFIGCOMMAND, + __module__ = 'config_command_pb2' + # @@protoc_insertion_point(class_scope:ConfigCommand) + )) +_sym_db.RegisterMessage(ConfigCommand) + + +# @@protoc_insertion_point(module_scope) diff --git a/utils/py_serial_examples/otto_communication_pb2.py b/utils/py_serial_examples/otto_communication_pb2.py new file mode 100644 index 0000000..fe68e9f --- /dev/null +++ b/utils/py_serial_examples/otto_communication_pb2.py @@ -0,0 +1,304 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: otto_communication.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='otto_communication.proto', + package='', + syntax='proto2', + serialized_pb=_b('\n\x18otto_communication.proto\"\x82\x02\n\rStatusMessage\x12\x17\n\x0flinear_velocity\x18\x01 \x02(\x02\x12\x18\n\x10\x61ngular_velocity\x18\x02 \x02(\x02\x12\x14\n\x0c\x64\x65lta_millis\x18\x03 \x02(\x06\x12%\n\x06status\x18\x04 \x02(\x0e\x32\x15.StatusMessage.Status\"\x80\x01\n\x06Status\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x12\n\x0eWAITING_CONFIG\x10\x01\x12\t\n\x05READY\x10\x02\x12\x0b\n\x07RUNNING\x10\x03\x12\x14\n\x10H_BRIDGE_FAULT_1\x10\x04\x12\x14\n\x10H_BRIDGE_FAULT_2\x10\x05\x12\x11\n\rUNKNOWN_ERROR\x10\x06\"\xa3\x02\n\rConfigCommand\x12\x0f\n\x07left_kp\x18\x01 \x02(\x02\x12\x0f\n\x07left_ki\x18\x02 \x02(\x02\x12\x0f\n\x07left_kd\x18\x03 \x02(\x02\x12\x10\n\x08right_kp\x18\x04 \x02(\x02\x12\x10\n\x08right_ki\x18\x05 \x02(\x02\x12\x10\n\x08right_kd\x18\x06 \x02(\x02\x12\x10\n\x08\x63ross_kp\x18\x07 \x02(\x02\x12\x10\n\x08\x63ross_ki\x18\x08 \x02(\x02\x12\x10\n\x08\x63ross_kd\x18\t \x02(\x02\x12\x10\n\x08\x62\x61seline\x18\n \x02(\x02\x12\x1c\n\x14ticks_per_revolution\x18\x0b \x02(\x07\x12!\n\x19right_wheel_circumference\x18\x0c \x02(\x02\x12 \n\x18left_wheel_circumference\x18\r \x02(\x02\"D\n\x0fVelocityCommand\x12\x17\n\x0flinear_velocity\x18\x01 \x02(\x02\x12\x18\n\x10\x61ngular_velocity\x18\x02 \x02(\x02') +) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + + + +_STATUSMESSAGE_STATUS = _descriptor.EnumDescriptor( + name='Status', + full_name='StatusMessage.Status', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='UNKNOWN', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='WAITING_CONFIG', index=1, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='READY', index=2, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='RUNNING', index=3, number=3, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='H_BRIDGE_FAULT_1', index=4, number=4, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='H_BRIDGE_FAULT_2', index=5, number=5, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='UNKNOWN_ERROR', index=6, number=6, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=159, + serialized_end=287, +) +_sym_db.RegisterEnumDescriptor(_STATUSMESSAGE_STATUS) + + +_STATUSMESSAGE = _descriptor.Descriptor( + name='StatusMessage', + full_name='StatusMessage', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='linear_velocity', full_name='StatusMessage.linear_velocity', index=0, + number=1, type=2, cpp_type=6, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='angular_velocity', full_name='StatusMessage.angular_velocity', index=1, + number=2, type=2, cpp_type=6, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='delta_millis', full_name='StatusMessage.delta_millis', index=2, + number=3, type=6, cpp_type=4, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='status', full_name='StatusMessage.status', index=3, + number=4, type=14, cpp_type=8, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _STATUSMESSAGE_STATUS, + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=29, + serialized_end=287, +) + + +_CONFIGCOMMAND = _descriptor.Descriptor( + name='ConfigCommand', + full_name='ConfigCommand', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='left_kp', full_name='ConfigCommand.left_kp', index=0, + number=1, type=2, cpp_type=6, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='left_ki', full_name='ConfigCommand.left_ki', index=1, + number=2, type=2, cpp_type=6, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='left_kd', full_name='ConfigCommand.left_kd', index=2, + number=3, type=2, cpp_type=6, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='right_kp', full_name='ConfigCommand.right_kp', index=3, + number=4, type=2, cpp_type=6, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='right_ki', full_name='ConfigCommand.right_ki', index=4, + number=5, type=2, cpp_type=6, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='right_kd', full_name='ConfigCommand.right_kd', index=5, + number=6, type=2, cpp_type=6, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='cross_kp', full_name='ConfigCommand.cross_kp', index=6, + number=7, type=2, cpp_type=6, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='cross_ki', full_name='ConfigCommand.cross_ki', index=7, + number=8, type=2, cpp_type=6, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='cross_kd', full_name='ConfigCommand.cross_kd', index=8, + number=9, type=2, cpp_type=6, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='baseline', full_name='ConfigCommand.baseline', index=9, + number=10, type=2, cpp_type=6, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='ticks_per_revolution', full_name='ConfigCommand.ticks_per_revolution', index=10, + number=11, type=7, cpp_type=3, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='right_wheel_circumference', full_name='ConfigCommand.right_wheel_circumference', index=11, + number=12, type=2, cpp_type=6, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='left_wheel_circumference', full_name='ConfigCommand.left_wheel_circumference', index=12, + number=13, type=2, cpp_type=6, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=290, + serialized_end=581, +) + + +_VELOCITYCOMMAND = _descriptor.Descriptor( + name='VelocityCommand', + full_name='VelocityCommand', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='linear_velocity', full_name='VelocityCommand.linear_velocity', index=0, + number=1, type=2, cpp_type=6, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='angular_velocity', full_name='VelocityCommand.angular_velocity', index=1, + number=2, type=2, cpp_type=6, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=583, + serialized_end=651, +) + +_STATUSMESSAGE.fields_by_name['status'].enum_type = _STATUSMESSAGE_STATUS +_STATUSMESSAGE_STATUS.containing_type = _STATUSMESSAGE +DESCRIPTOR.message_types_by_name['StatusMessage'] = _STATUSMESSAGE +DESCRIPTOR.message_types_by_name['ConfigCommand'] = _CONFIGCOMMAND +DESCRIPTOR.message_types_by_name['VelocityCommand'] = _VELOCITYCOMMAND + +StatusMessage = _reflection.GeneratedProtocolMessageType('StatusMessage', (_message.Message,), dict( + DESCRIPTOR = _STATUSMESSAGE, + __module__ = 'otto_communication_pb2' + # @@protoc_insertion_point(class_scope:StatusMessage) + )) +_sym_db.RegisterMessage(StatusMessage) + +ConfigCommand = _reflection.GeneratedProtocolMessageType('ConfigCommand', (_message.Message,), dict( + DESCRIPTOR = _CONFIGCOMMAND, + __module__ = 'otto_communication_pb2' + # @@protoc_insertion_point(class_scope:ConfigCommand) + )) +_sym_db.RegisterMessage(ConfigCommand) + +VelocityCommand = _reflection.GeneratedProtocolMessageType('VelocityCommand', (_message.Message,), dict( + DESCRIPTOR = _VELOCITYCOMMAND, + __module__ = 'otto_communication_pb2' + # @@protoc_insertion_point(class_scope:VelocityCommand) + )) +_sym_db.RegisterMessage(VelocityCommand) + + +# @@protoc_insertion_point(module_scope) diff --git a/utils/py_serial_examples/proto_test.py b/utils/py_serial_examples/proto_test.py new file mode 100644 index 0000000..0aec647 --- /dev/null +++ b/utils/py_serial_examples/proto_test.py @@ -0,0 +1,28 @@ +import otto_communication_pb2 + +status_message = otto_communication_pb2.StatusMessage() + +status_message.linear_velocity = 0.0 +status_message.angular_velocity = 0.0 +status_message.delta_millis = 0 +status_message.status = otto_communication_pb2.StatusMessage.Status.UNKNOWN + +encode_buffer = status_message.SerializeToString() +status_message_length = len(encode_buffer) +print(encode_buffer) +print(status_message_length) +status_message.ParseFromString(encode_buffer) +print(status_message) + +my_velocity = otto_communication_pb2.VelocityCommand() +my_velocity.linear_velocity = 0.6 +my_velocity.angular_velocity = -0.1 + +encode_buffer = my_velocity.SerializeToString() +print(encode_buffer) +print(len(encode_buffer)) + + +my_config = otto_communication_pb2.ConfigCommand() +print(my_config) + diff --git a/utils/py_serial_examples/status_message_pb2.py b/utils/py_serial_examples/status_message_pb2.py new file mode 100644 index 0000000..cf3f0fa --- /dev/null +++ b/utils/py_serial_examples/status_message_pb2.py @@ -0,0 +1,135 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: status_message.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='status_message.proto', + package='', + syntax='proto2', + serialized_pb=_b('\n\x14status_message.proto\"\x82\x02\n\rStatusMessage\x12\x17\n\x0flinear_velocity\x18\x01 \x02(\x02\x12\x18\n\x10\x61ngular_velocity\x18\x02 \x02(\x02\x12\x14\n\x0c\x64\x65lta_millis\x18\x03 \x02(\x06\x12%\n\x06status\x18\x04 \x02(\x0e\x32\x15.StatusMessage.Status\"\x80\x01\n\x06Status\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x12\n\x0eWAITING_CONFIG\x10\x01\x12\t\n\x05READY\x10\x02\x12\x0b\n\x07RUNNING\x10\x03\x12\x14\n\x10H_BRIDGE_FAULT_1\x10\x04\x12\x14\n\x10H_BRIDGE_FAULT_2\x10\x05\x12\x11\n\rUNKNOWN_ERROR\x10\x06') +) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + + + +_STATUSMESSAGE_STATUS = _descriptor.EnumDescriptor( + name='Status', + full_name='StatusMessage.Status', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='UNKNOWN', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='WAITING_CONFIG', index=1, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='READY', index=2, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='RUNNING', index=3, number=3, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='H_BRIDGE_FAULT_1', index=4, number=4, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='H_BRIDGE_FAULT_2', index=5, number=5, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='UNKNOWN_ERROR', index=6, number=6, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=155, + serialized_end=283, +) +_sym_db.RegisterEnumDescriptor(_STATUSMESSAGE_STATUS) + + +_STATUSMESSAGE = _descriptor.Descriptor( + name='StatusMessage', + full_name='StatusMessage', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='linear_velocity', full_name='StatusMessage.linear_velocity', index=0, + number=1, type=2, cpp_type=6, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='angular_velocity', full_name='StatusMessage.angular_velocity', index=1, + number=2, type=2, cpp_type=6, label=2, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='delta_millis', full_name='StatusMessage.delta_millis', index=2, + number=3, type=6, cpp_type=4, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='status', full_name='StatusMessage.status', index=3, + number=4, type=14, cpp_type=8, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _STATUSMESSAGE_STATUS, + ], + options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=25, + serialized_end=283, +) + +_STATUSMESSAGE.fields_by_name['status'].enum_type = _STATUSMESSAGE_STATUS +_STATUSMESSAGE_STATUS.containing_type = _STATUSMESSAGE +DESCRIPTOR.message_types_by_name['StatusMessage'] = _STATUSMESSAGE + +StatusMessage = _reflection.GeneratedProtocolMessageType('StatusMessage', (_message.Message,), dict( + DESCRIPTOR = _STATUSMESSAGE, + __module__ = 'status_message_pb2' + # @@protoc_insertion_point(class_scope:StatusMessage) + )) +_sym_db.RegisterMessage(StatusMessage) + + +# @@protoc_insertion_point(module_scope) diff --git a/utils/py_serial_examples/transmit.py b/utils/py_serial_examples/transmit.py index 568c31c..1c345d4 100644 --- a/utils/py_serial_examples/transmit.py +++ b/utils/py_serial_examples/transmit.py @@ -20,11 +20,10 @@ print("open port") ang_vel_cmd = 0.8 lin_vel_cmd = 0.5 while 1: - msg_output_buffer = struct.pack('